2013-03-06 15 views
7

Ben Eclipse 3.7 w/m2e (yüklü 2 hafta önce), Java 6 ve Scala 2.10 ile kullanıyorum.Maven sadece kaynak klasör olarak src/main/java veya src/main/scala'yı seçmiyor, her ikisi de

benim .pom yapılandırılmış nasıl bağlı olarak proje yapılandırmasını güncelleştirmek için M2e kullanmak hiç, her zaman ya src/main/java & & src/test/java alır ya benim kaynak klasör olarak src/main/scala & & src/test/scala seçer. Dört tane de kaynak klasör olarak sahip olmak isterim. İşte

Ben scala desteklemeyen bir sunucuda çalıştırabilirsiniz böylece tüm gerekli bağımlılıkları ile UberJar oluşturmak istiyorum,

<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"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>me.my.name</groupId> 
<artifactId>ai.chess</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<name>chessAI</name> 
<description>Chess AI</description> 

<repositories> 
    <repository> 
     <id>scala-tools.org</id> 
     <name>Scala-tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-releases</url> 
    </repository> 
</repositories> 

<pluginRepositories> 
    <pluginRepository> 
     <id>scala-tools.org</id> 
     <name>Scala-tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-releases</url> 
    </pluginRepository> 
</pluginRepositories> 

<dependencies> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>2.10.0</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 


<build> 
    <!-- <sourceDirectory>src/main/scala</sourceDirectory> 
    <testSourceDirectory>src/test/scala</testSourceDirectory> --> 
    <plugins> 
     <plugin> 
      <groupId>org.scala-tools</groupId> 
      <artifactId>maven-scala-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <jvmArgs> 
        <jvmArg>-Xms64m</jvmArg> 
        <jvmArg>-Xmx1024m</jvmArg> 
       </jvmArgs> 
       <sources> 
        <source>src/main/scala</source> 
        <source>src/main/java</source> 
        <source>src/test/scala</source> 
        <source>src/test/java</source> 
       </sources> 
      </configuration> 
     </plugin> 
    </plugins> 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId> 
             org.scala-tools 
            </groupId> 
            <artifactId> 
             maven-scala-plugin 
            </artifactId> 
            <versionRange> 
             [2.15.2,) 
            </versionRange> 
            <goals> 
             <goal>compile</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <ignore></ignore> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Sonunda benim .pom (ancak does Java). Satranç oyununun çerçevesi Java'da verilmiştir, bu yüzden Scala

ile birlikte kullanmak istiyorum. Maven ağrım devam ederse, anteni kullanmak için sadece Ant'i kullanmaya geri dönebilirim.

P.S. Verilen .pom ile java kaynak klasörlerini kullanır.

cevap

6

Scala-maven-plugin (previously named the maven-scala-plugin) some extra configuration to do mixed Scala/Java projects gerektiriyor, ancak (aşağıya kopyalanmıştır) onların talimatları, bu yapı yoluna gerekli tüm dizinleri eklemek gerekir. Scala-maven-plugin

<plugins> 
    <plugin> 
     <groupId>net.alchim31.maven</groupId> 
     <artifactId>scala-maven-plugin</artifactId> 
     <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> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <executions> 
      <execution> 
       <phase>compile</phase> 
       <goals> 
        <goal>compile</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
+0

Hatalar gibi: "Eklenti yürütme, yaşam döngüsü yapılandırması kapsamında değil: net.alchim31.maven: scala-maven-plugin: 3.1.0: add-source (yürütme: scala-derleme-ilk, aşama: işlem- \t kaynakları) – Tombstone

+0

Ayrıca m2e-scala (https://github.com/sonatype/m2eclipse-scala) kullanmayı denediniz mi? – Steve

4

İki seçeneğiniz vardır: Bunlardan ilki, projenizi her biri kendi pompalı iki modüllü bir ana projede bölmektir. Bu, maven ile bunu yapmanın daha doğal bir yoludur, ancak kendim bir scala kullanıcısı olmadığımdan, kurulumunuzda mümkün olduğundan emin değilim.

<parent> ai.chess (packaging: pom) 
    <module> ai.chess.java (packaging: jar) 
    <module> au.chess.scala (using <sourceDirectory>) 

İkinci seçenek olduğu gibi düzeni tutmak ve yapı kaynak dizinleri eklemek için build-helper-maven-plugin kullanmaktır; Böyle:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
       <source>src/main/scala</source> 
       </sources> 
      </configuration> 
      </execution> 
      <execution> 
      <id>add-test-source</id> 
      <phase>generate-test-sources</phase> 
      <goals> 
       <goal>add-test-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
       <source>src/test/scala</source> 
       </sources> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
0
  1. güncelleme
  2. eklenti kaynağı (-yardımcı-maven- inşa ettiklerini aynı şeyi hedefe kullanmak (scala-tools.org artık 2 yıldan beri var) scala için eklenti yalnızca)

Ayrıca aynı src altında .java ve .scala dosyaları saklayabilirsiniz/ana/xxx ve src/test/xxx, java derleyicisi * .scala görmezden ve scala derleyici kullanılan her ikisi de.

İlgili konular