我有一个Maven项目(在Eclipse中使用m2eclipse插件),它包含两种不同语言的代码(Java和Clojure)。
理想情况下,我想为两种语言分别使用两个源文件夹:
Eclipse很高兴在项目中定义了两个源目录。但是,据我所知,Maven只支持单个源目录,如下所示:
<build>
....
<sourceDirectory>src/main/java</sourceDirectory>
....
</build>
如果我将第二个sourceDirectory添加到pom.xml,我会收到错误.....
是否有推荐的方法在Maven中配置这种多语言项目?
答案 0 :(得分:4)
我不相信你需要这样做; Clojure插件应该已经知道如何找到Clojure源代码(虽然IIRC默认为src / main / clojure)。
有关详细信息,请参阅here。
答案 1 :(得分: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
,那么您应该没有配置就可以了。
答案 2 :(得分: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>
答案 3 :(得分: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>