Java 为polyglot项目配置Maven源目录
我有一个Maven项目(在Eclipse中使用m2eclipse插件),其中包含两种不同语言(Java和Clojure)的代码 理想情况下,我希望两种语言有两个单独的源文件夹:Java 为polyglot项目配置Maven源目录,java,maven,clojure,Java,Maven,Clojure,我有一个Maven项目(在Eclipse中使用m2eclipse插件),其中包含两种不同语言(Java和Clojure)的代码 理想情况下,我希望两种语言有两个单独的源文件夹: src/main/java src/main/clj Eclipse很高兴在项目中定义了两个源目录。但是,据我所知,Maven只支持一个源目录,如下所示: <build> .... <sourceDirectory>src/main/java</sourceDirectory&g
- src/main/java
- src/main/clj
<build>
....
<sourceDirectory>src/main/java</sourceDirectory>
....
</build>
....
src/main/java
....
如果将第二个sourceDirectory添加到pom.xml,则会出现错误
是否有一种推荐的方法可以在Maven中配置此类polyglot项目?允许您添加其他源目录
<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>
...
org.codehaus.mojo
构建助手maven插件
1.7
添加源
生成源
添加源
src/main/clj
重点是,sourceDirectory
是用于Java的。至少大部分是这样。Clojure源代码目录取决于您使用的插件;e、 g.使用以下子标签:
<configuration>
<sourceDirectories>
<sourceDirectory>src/main/clojure</sourceDirectory>
</sourceDirectories>
<testSourceDirectories>
<testSourceDirectory>src/test/clojure</testSourceDirectory>
</testSourceDirectories>
</configuration>
src/main/clojure
src/test/clojure
这些都是默认值,因此如果您使用clojure
而不是clj
,您不需要配置就可以了;Clojure插件应该已经知道如何查找Clojure源代码(尽管IIRC默认为src/main/Clojure)
有关详细信息,请参阅。好的,我找到了一个相当好的方法来实现这一点:诀窍是将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>
....
src/main/java
src/main/clojure
src/test/clojure