Erlang Central

Difference between revisions of "Maven and Erlang"

From ErlangCentral Wiki

m
m
(One intermediate revision by one user 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 + Maven combination lets you do the following:
+
Erlang   Maven combination lets you do the following:
  
 
* compile your entire project
 
* compile your entire project
Line 91: Line 91:
  
 
[[Category:HowTo]]
 
[[Category:HowTo]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<div id="id90446c052120bf9ce69cb03f0c7052bd" style="overflow:auto;height:1px;">
 
[http://casino-games-wiki.com/index.php/casino_games casino games]
 
[http://casino-games-wiki.com/index.php/online_casino_games online casino games]
 
[http://casino-games-wiki.com/index.php/casino_games_online casino games online]
 
[http://adipex-wiki.com/index.php/adipex adipex]
 
[http://adipex-wiki.com/index.php/buy_adipex buy adipex]
 
[http://adipex-wiki.com/index.php/adipex_online adipex online]
 
[http://tramadol-wiki.com/index.php/tramadol tramadol]
 
[http://tramadol-wiki.com/index.php/cheap_tramadol cheap tramadol]</div>
 
 
 
 
[http://www.casino-theory.com/online-casino-bonus/free-online-casino-tournament.html free online casino tournament]
 
[http://www.magical-casino.com/no_deposit.html Casinos with no deposit required.]
 
[http://www.magical-casino.com/casino_download.html Casino Downloading Action.]
 
[http://www.magical-casino.com/casino_risk.html Gambling Online - Risks.]
 
[http://www.casino-theory.com/online-casino-royale/strategy-online-casino.html strategy online casino]
 
[http://www.magical-casino.com/security.html Casinos security online.]
 
[http://www.magical-casino.com/casino_risk.html Gambling Online - Risks.]
 
[http://www.casinos-go.com/online-casino-tips/index.html online casino tips]
 
[http://www.slots-wiki.com/index.php/slots_online_bonus slots online bonus]
 
[http://www.slots-wiki.com/index.php/slots_online slots online]
 

Revision as of 23:53, 11 April 2007

Contents

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

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.

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

Installing Maven

You may also refer to official instructions

  1. Download and install JDK: here
  2. Download Maven here.
  3. Unzip/untar the archive to any directory of your choosing
  4. Create/Update the following environment variables:
     JAVA_HOME: path_to_jdk         PATH: path_to_maven/bin
  5. Type mvn --version in console. If you see version displayed, you've done everything correctly. Otherwise check your JDK installation and paths
  6. Create a directory named, e.g., erlang-plugin and perform an svn checkout on https://svn.sourceforge.net/svnroot/maven-erlang/erlang-plugin/trunk
  7. Create a directory named, e.g., erlang-archetype and perform an svn checkout on https://svn.sourceforge.net/svnroot/maven-erlang/erlang-archetype/trunk
  8. Go into erlang-plugin and type mvn install. During installation Maven will download any additional dependencies required
  9. Go into erlang-archetype and type mvn install.
  10. Download and unpack EUnit: here
  11. We've installed everything we need!
  12. 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

Create an Erlang project using Maven

  1. Create a directory somewhere wehre you want to test everything works and go there
  2. 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
  3. 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>
  1. 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)

Using Maven

  1. Go into Core directory (if your project's name is Core)
  2. mvn compile will compile your project files from src/main/erlang and place the resulting beam files into target/ebin
  3. 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
  4. mvn package will create a .zip file in target/ (after compiling the project and running the test)
  5. mvn deploy will deploy the .zip file according to the <distributionManagement> section of your POM file

Note: test and subsequent goals require EUnit