4

假设我有一个标准的 maven 项目,带有标准的四个目录

src/main/java
src/main/resources
src/test/java
src/test/resources

现在让我们假设,我在“src/main”下创建了一个名为“clojure”的子目录。那么“src/main/clojure”下的源文件是否会在运行构建时自动编译,或者我是否必须通过某些插件的配置(例如 build-helper-maven-plugin)告诉 maven,它也有编译“src/main/clojure”下的源代码?

换句话说,创建任何不是“.../java”或“.../resources”的文件夹是否需要在 pom.xml 中进行显式配置,以便 maven 考虑那里的源?

任何帮助,将不胜感激。

问候,贺拉斯

4

3 回答 3

1

Maven 项目通常使用单个编译器构建,该编译器在称为 Maven 的源文件夹的文件夹中查找其所有源文件。根据项目,可能会自动添加此类源文件夹,例如 src/main/java。如果使用不同的编译器,可能会自动添加其他文件夹,例如 src/main/groovy。

有时 IDE(如 Eclipse 或 IntelliJ)中的 Maven 集成不会为非 Java 项目选择文件夹,即使 POM 中有正确的 Maven 插件,例如用于构建 Groovy 项目。

因此,即使命令行上的构建可以很好地与 src/main/groovy 中的文件一起运行,但在 IDE 中导入项目时,该文件夹可能不会被检测为源文件夹。在这种情况下,您可能必须添加其他源文件夹,例如

<plugin>
  <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
      <execution>
        <id>add-source</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>add-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>src/main/groovy</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>
于 2013-07-23T17:51:06.257 回答
0

Apache maven 具有开箱即用的标准目录布局。

要让 maven 理解除上述结构之外的任何其他结构,您必须在pom.xml.

查看 POM 参考的这一部分

于 2013-07-23T16:28:33.737 回答
0

是的,maven 需要“知道”这些目录的含义,尽管 clojure 构建插件可能会按照约定使用该目录 - 参见例如:https ://github.com/talios/clojure-maven-plugin

于 2013-07-23T16:19:37.013 回答