【问题标题】:Configuring Maven source directories for a polyglot project为多语言项目配置 Maven 源目录
【发布时间】:2012-01-02 00:27:46
【问题描述】:

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

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

  • src/main/java
  • src/main/clj

Eclipse 很高兴在项目中定义了两个源目录。但是,据我所知,Maven 仅支持单个源目录,如下所示:

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

如果我向 pom.xml 添加第二个 sourceDirectory,我会收到错误.....

有没有推荐的方法在 Maven 中配置这种多语言项目?

【问题讨论】:

    标签: java maven clojure


    【解决方案1】:

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

    有关详细信息,请参阅here

    【讨论】:

      【解决方案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,你应该没有配置就可以了。

      【讨论】:

        【解决方案3】:

        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>
        

        【讨论】:

          【解决方案4】:

          好的,我找到了一个相当好的方法来完成这项工作:诀窍是将您的 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>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-01-08
            • 2017-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-13
            • 1970-01-01
            相关资源
            最近更新 更多