Maven and Erlang
From Erlang Community
(Difference between revisions)
| Revision as of 20:54, 7 October 2006 (edit) Adamselene (Talk | contribs) (→Maven and Erlang - Added specs of the "deploy" goal) ← Previous diff |
Current revision (23:53, 11 April 2007) (edit) (undo) VenIsh (Talk | contribs) m |
||
| (6 intermediate revisions not shown.) | |||
| Line 12: | Line 12: | ||
| Thanks to [http://maven-erlang.sourceforge.net/ maven-erlang] you can use Maven to handle Erlang projects. | Thanks to [http://maven-erlang.sourceforge.net/ maven-erlang] you can use Maven to handle Erlang projects. | ||
| - | Erlang | + | Erlang Maven combination lets you do the following: |
| * compile your entire project | * compile your entire project | ||
| Line 68: | Line 68: | ||
| <!-- CHANGE THE FOLLOWING PATHS --> | <!-- CHANGE THE FOLLOWING PATHS --> | ||
| <!-- *********************** --></pre> | <!-- *********************** --></pre> | ||
| - | <erlPath> | + | <erlPath>path_to_your_Erlang_installation/bin/erl.exe</erlPath> |
| <eunitPath>path_to_EUnit/eunit-1.1/</eunitPath> | <eunitPath>path_to_EUnit/eunit-1.1/</eunitPath> | ||
| </configuration> | </configuration> | ||
| Line 76: | Line 76: | ||
| </project> | </project> | ||
| + | |||
| + | <ol start="4"> | ||
| + | <li>You'll also have to configure the ''<distributionManagement>'' section of your ''pom.xml'' file if you want to use the ''deploy'' goal. More information is available on the [http://maven.apache.org/plugins/maven-deploy-plugin/usage.html maven-deploy-plugin homepage]. You can also use another deployment plugin such as [http://maven.apache.org/wagon/ Wagon] (e.g. for DAV support)</li> | ||
| + | </ol> | ||
| + | |||
| ===Using Maven=== | ===Using Maven=== | ||
| - | # Go into '''Core''' directory | + | # Go into '''Core''' directory (if your project's name is '''Core''') |
| - | # '''mvn compile''' will compile your project and | + | # '''mvn compile''' will compile your project files from '''src/main/erlang''' and place the resulting beam files into '''target/ebin''' |
| - | # '''mvn test''' will | + | # '''mvn test''' will compile all test files from '''src/test/erlang''', place the beam files into '''target/test''' and run the ''test/0'' function for every module which name ends with '''_test''' |
| - | # '''mvn package''' will create a .zip file in ''' | + | # '''mvn package''' will create a .zip file in '''target/''' (after compiling the project and running the test) |
| - | # '''mvn deploy''' will | + | # '''mvn deploy''' will deploy the .zip file according to the ''<distributionManagement>'' section of your POM file |
| - | ''Note:'' | + | ''Note:'' test and subsequent goals require EUnit |
| [[Category:HowTo]] | [[Category:HowTo]] | ||
Current revision
Contents |
[edit] Notice
This is a two-part article
This part deals with installing Maven and maven-erlang plugin for Maven
The second part will deal with using Maven with Erlide
[edit] What is Maven?
Maven is a software project management tool. Though it was initially developed to handle Java projects, thanks to its plugin system you can use it for other types of projects as well.
[edit] Maven and Erlang
Thanks to maven-erlang you can use Maven to handle Erlang projects.
Erlang Maven combination lets you do the following:
- compile your entire project
- use EUnit to do automatic testing
- package all project directories, OTP-style, into a single .zip file
- deploy: deploy the zip file to a remote location (via FTP, SCP, WebDAV, etc.)
The packaged project has the following directory structure:
./
--- doc
--- ebin
--- include
--- src
[edit] Installing Maven
You may also refer to official instructions
- Download and install JDK: here
- Download Maven here.
- Unzip/untar the archive to any directory of your choosing
- Create/Update the following environment variables:
JAVA_HOME: path_to_jdk PATH: path_to_maven/bin
- Type mvn --version in console. If you see version displayed, you've done everything correctly. Otherwise check your JDK installation and paths
- Create a directory named, e.g., erlang-plugin and perform an svn checkout on https://svn.sourceforge.net/svnroot/maven-erlang/erlang-plugin/trunk
- Create a directory named, e.g., erlang-archetype and perform an svn checkout on https://svn.sourceforge.net/svnroot/maven-erlang/erlang-archetype/trunk
- Go into erlang-plugin and type mvn install. During installation Maven will download any additional dependencies required
- Go into erlang-archetype and type mvn install.
- Download and unpack EUnit: here
- We've installed everything we need!
- As a last step I would also recommend creating the following mvncreate.bat file in **maven/bin** so as to save yourself some typing:
mvn archetype:create -DarchetypeGroupId=org.erlang.maven -DarchetypeArtifactId=erlang-archetype -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=%1 -DartifactId=%2
[edit] Create an Erlang project using Maven
- Create a directory somewhere wehre you want to test everything works and go there
- Type the following: mvncreate Test Core (this will create a project named Core in the group named Orcas). You can see the directories created by Maven here
- In directory Core open the pom.xml file and edit it:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>Test</groupId>
<artifactId>Core</artifactId>
<packaging>erlang-otp</packaging>
<version>1.0-SNAPSHOT</version>
<name>Test Core</name>
<url>some url</url>
<build>
<plugins>
<plugin>
<groupId>org.erlang.maven</groupId>
<artifactId>erlang-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<!-- Required parameter : absolute path to the erlang binary !-->
<!-- *********************** -->
<!-- CHANGE THE FOLLOWING PATHS -->
<!-- *********************** -->
<erlPath>path_to_your_Erlang_installation/bin/erl.exe</erlPath>
<eunitPath>path_to_EUnit/eunit-1.1/</eunitPath>
</configuration>
</plugin>
</plugins>
</build>
</project>
- You'll also have to configure the <distributionManagement> section of your pom.xml file if you want to use the deploy goal. More information is available on the maven-deploy-plugin homepage. You can also use another deployment plugin such as Wagon (e.g. for DAV support)
[edit] Using Maven
- Go into Core directory (if your project's name is Core)
- mvn compile will compile your project files from src/main/erlang and place the resulting beam files into target/ebin
- mvn test will compile all test files from src/test/erlang, place the beam files into target/test and run the test/0 function for every module which name ends with _test
- mvn package will create a .zip file in target/ (after compiling the project and running the test)
- mvn deploy will deploy the .zip file according to the <distributionManagement> section of your POM file
Note: test and subsequent goals require EUnit

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati

