Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为polyglot项目配置Maven源目录_Java_Maven_Clojure - Fatal编程技术网

Java 为polyglot项目配置Maven源目录

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

我有一个Maven项目(在Eclipse中使用m2eclipse插件),其中包含两种不同语言(Java和Clojure)的代码

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

  • src/main/java
  • src/main/clj
Eclipse很高兴在项目中定义了两个源目录。但是,据我所知,Maven只支持一个源目录,如下所示:

<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