java 如何为maven添加一个额外的源目录来编译并包含在构建jar中?

zbsbpyhn  于 2023-01-19  发布在  Java
关注(0)|答案(6)|浏览(231)

除了src/main/java之外,我还添加了一个src/bootstrap目录,我想把它包含在我的构建过程中,换句话说,我想让maven编译并把那里的源代码包含在我的构建中。

dtcbnfnu

dtcbnfnu1#

您可以使用Build Helper Plugin,例如:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.2.0</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>
doinxwow

doinxwow2#

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

pom.xml更新为-

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

dhxwm5r44#

对于最新的Maven版本(3)和最新版本的Maven编译器插件(3.7.0),我注意到如果包含要添加到构建中的源代码的文件夹位于target文件夹或其子文件夹中,则不需要添加带有build-helper-maven-plugin的源文件夹。
看起来编译器maven插件可以编译位于此文件夹中的任何java源代码,无论这些代码包含在哪个目录中。
例如,在target/a中有一些(生成的或没有)源代码,target/generated-source/foo将被编译并添加到outputDirectory中:target/classes .

mmvthczy

mmvthczy5#

要将文件夹标记为生成的源文件,并让IntelliJ拾取它,请使用以下命令:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
    </configuration>
</plugin>

我花了一个小时来研究如何避免IntelliJ在我手动将target/generated-sources标记为一个generated sources文件夹后恢复。codehaus.mojo插件不起作用。但是这个解决方案起作用了!

yi0zb3m4

yi0zb3m46#

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

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

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

相关问题