2012-01-02 88 views
2

我有一个包含两种不同语言(Java和Clojure)代码的Maven项目(在Eclipse中使用m2eclipse插件)。配置多语言项目的Maven源代码目录

理想情况下,我想两个单独的源文件夹的两种语言:

  • 的src/main/java的
  • 的src/main/CLJ

Eclipse是高兴有两个来源在项目中定义的目录。然而,据我可以工作时,Maven只支持单个源目录如下:

<build> 
    .... 
    <sourceDirectory>src/main/java</sourceDirectory> 
    .... 
</build> 

如果我添加第二个sourceDirectory到pom.xml中,我得到一个错误.....

在Maven中是否有推荐的方式来配置这种多语言项目?

回答

4

我不相信你需要那样做; Clojure插件应该已经知道如何找到Clojure源码(尽管IIRC默认为src/main/clojure)。

有关详细信息,请参见here

1

Build Helper Maven Plugin允许您添加其他源目录。

<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/clj</source> 
       </sources> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
2

要点是,sourceDirectory用于Java。大多数情况下,至少。 Clojure的源码目录取决于你使用的插件;例如https://github.com/talios/clojure-maven-plugin使用以下子标签:

<configuration> 
    <sourceDirectories> 
    <sourceDirectory>src/main/clojure</sourceDirectory> 
    </sourceDirectories> 
    <testSourceDirectories> 
    <testSourceDirectory>src/test/clojure</testSourceDirectory> 
    </testSourceDirectories> 
</configuration> 

这些都是默认值,所以如果你使用clojure而不是clj,你应该没有配置就好了。

1

好的,我找到了一个合理的方法来完成这项工作:诀窍是将您的Clojure源目录归类为Maven中的资源目录。这样.clj文件就像你期望的那样包含在生成的.jar文件中。

pom.xml中的有关部分:

<build> 
     .... 
     <sourceDirectory>src/main/java</sourceDirectory> 

     <resources> 
      <resource> 
       <directory>src/main/clojure</directory> 
      </resource> 
     </resources> 

     <testResources> 
      <testResource> 
       <directory>src/test/clojure</directory> 
      </testResource> 
     </testResources> 
</build>