如何为maven添加额外的源目录以进行编译并包含在构建jar中?

时间:2012-03-17 19:20:39

标签: java maven maven-2

除了src / main / java之外,我正在添加一个src / bootstrap目录,我希望在我的构建过程中包含该目录,换句话说,我希望maven在我的构建中编译并包含源代码。如何!?

5 个答案:

答案 0 :(得分:124)

您可以使用Build Helper 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>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

答案 1 :(得分:34)

注意:此解决方案只是将java源文件移动到目标/ classes目录,不会编译源。

pom.xml更新为 -

<project>   
 ....
    <build>
      <resources>
        <resource>
          <directory>src/main/config</directory>
        </resource>
      </resources>
     ...
    </build>
...
</project>

答案 2 :(得分:8)

答案 3 :(得分:1)

对于最新的Maven版本(3)和最新的Maven编译器插件版本(3.7.0),我注意到,如果包含源代码的文件夹不包含build-helper-maven-plugin,则不需要添加源文件夹。添加到内部版本位于target文件夹或其子文件夹中。
看来,编译器maven插件可以编译位于此文件夹内的所有Java源代码,无论包含它们的目录是什么。
例如,在target/a中有一些(生成的或没有生成的)源代码,target/generated-source/foo将被编译并添加到outputDirectory:target/classes中。

答案 4 :(得分:0)

您可以为构建过程添加目录,如:

    ...
   <resources>
     <resource>
       <directory>src/bootstrap</directory>
     </resource>
   </resources>
   ...

src / main / java是默认路径,不需要在pom.xml中提及