Scala

Last modified by Sebastian Marsching on 2022/05/27 22:46

Scala, Maven and Eclipse

An example pom.xml for using Maven for Scala with the Scala IDE for Eclipse can be found at http://lampsvn.epfl.ch/trac/scala/wiki/ScalaEclipseMaven.

For weave4j a slightly modified pom.xml is used:

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <artifactId>weave4j</artifactId>
 <groupId>org.marsching.weave4j</groupId>
 <version>1.0.0</version>

 <modelVersion>4.0.0</modelVersion>

 <packaging>war</packaging>

 <properties>
   <scala.version>2.7.7</scala.version>
   <spring.version>3.0.0.RELEASE</spring.version>
 </properties>

 <dependencies>

   <!-- Because this is a web app, we also have a dependency on the servlet api. -->
   <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>servlet-api</artifactId>
     <version>2.5</version>
     <scope>provided</scope>
   </dependency>

   <!-- Data source connection pool -->
   <dependency>
     <groupId>commons-dbcp</groupId>
     <artifactId>commons-dbcp</artifactId>
     <version>1.2.2</version>
   </dependency>

   <!-- Database driver -->
   <dependency>
     <groupId>org.hsqldb</groupId>
     <artifactId>hsqldb</artifactId>
     <version>1.8.0.10</version>
   </dependency>

   <!-- Hibernate -->
   <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-core</artifactId>
     <version>3.3.2.GA</version>
   </dependency>

   <!-- Hibernate uses slf4j for logging, for our purposes here use the simple backend -->
   <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-simple</artifactId>
     <version>1.5.8</version>
   </dependency>

   <!-- Byte code instrumentation for Hibernate -->
   <dependency>
     <groupId>javassist</groupId>
     <artifactId>javassist</artifactId>
     <version>3.8.0.GA</version>
   </dependency>

   <!-- Spring libraries -->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-webmvc</artifactId>
     <version>${spring.version}</version>
   </dependency>

   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-tx</artifactId>
     <version>${spring.version}</version>
   </dependency>

   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-orm</artifactId>
     <version>${spring.version}</version>
   </dependency>

   <!-- Jackson JSON Mapper -->
   <dependency>
     <groupId>org.codehaus.jackson</groupId>
     <artifactId>jackson-mapper-asl</artifactId>
     <version>1.4.1</version>
   </dependency>

   <!-- Used for Base64 decoding -->
   <dependency>
     <groupId>commons-codec</groupId>
     <artifactId>commons-codec</artifactId>
     <version>1.4</version>
   </dependency>

   <!-- Scala dependencies -->
   <dependency>
     <groupId>org.scala-lang</groupId>
     <artifactId>scala-library</artifactId>
     <version>${scala.version}</version>
   </dependency>

   <dependency>
     <groupId>org.scala-lang</groupId>
     <artifactId>scala-compiler</artifactId>
     <version>${scala.version}</version>
   </dependency>
   
 </dependencies>

 <build>
   <plugins>
     <plugin>
       <groupId>org.scala-tools</groupId>
       <artifactId>maven-scala-plugin</artifactId>
       <version>2.7.2</version>
       <executions>
         <execution>
           <id>scala-compile-first</id>
           <phase>process-resources</phase>
           <goals>
             <goal>add-source</goal>
             <goal>compile</goal>
           </goals>
         </execution>
         <execution>
           <id>scala-test-compile</id>
           <phase>process-test-resources</phase>
           <goals>
             <goal>testCompile</goal>
           </goals>
         </execution>
       </executions>
       <configuration>
         <scalaVersion>${scala.version}</scalaVersion>
         <args>
           <arg>-target:jvm-1.5</arg>
         </args>
       </configuration>
     </plugin>

     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
       <configuration>
         <source>1.5</source>
         <target>1.5</target>
       </configuration>
       <executions>
         <execution>
           <phase>compile</phase>
           <goals>
             <goal>compile</goal>
           </goals>
         </execution>
       </executions>
     </plugin>

     <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>build-helper-maven-plugin</artifactId>
       <version>1.4</version>
       <executions>
         <execution>
           <id>add-source</id>
           <phase>generate-sources</phase>
           <goals>
             <goal>add-source</goal>
           </goals>
           <configuration>
             <sources>
               <source>src/main/scala</source>
               <source>src/main/java</source>
             </sources>
           </configuration>
         </execution>
         <execution>
           <id>add-test-source</id>
           <phase>generate-sources</phase>
           <goals>
             <goal>add-test-source</goal>
           </goals>
           <configuration>
             <sources>
               <source>src/test/scala</source>
               <source>src/test/java</source>
             </sources>
           </configuration>
         </execution>
       </executions>
     </plugin>

     <plugin>
       <artifactId>maven-eclipse-plugin</artifactId>
       <configuration>
         <sourceIncludes>
           <sourceInclude>**/*.scala</sourceInclude>
         </sourceIncludes>
         <buildcommands>
           <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand>
         </buildcommands>
         <additionalProjectnatures>
           <!--
              maven-eclipse-plugin puts this nature after
              org.eclipse.jdt.core.javanature in .project so the project
              will have a J badge instead of an S in the Package Explorer
            -->

           <projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature>
         </additionalProjectnatures>
         <classpathContainers>
           <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
           <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer>
         </classpathContainers>
       </configuration>
     </plugin>

   </plugins>
 </build>

 <reporting>
   <plugins>
     <plugin>
       <groupId>org.scala-tools</groupId>
       <artifactId>maven-scala-plugin</artifactId>
       <version>2.7.2</version>
       <configuration>
         <scalaVersion>${scala.version}</scalaVersion>
       </configuration>
     </plugin>
   </plugins>
 </reporting>
 

</project>