gpt4 book ai didi

java - 使用 Maven 打包资源文件和类的最佳实践

转载 作者:行者123 更新时间:2023-11-30 11:18:57 27 4
gpt4 key购买 nike

目前我有一个示例 maven 项目,其中包含以下 build我指定第二个资源位置目录的部分:

<project>
...
<build>
<resources>
<resource>
<directory>src/main/second-resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>${artifactId}</finalName>
<outputDirectory>${jarBuildPath}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>

我可以使用此配置打包我的 jar,将我的类和资源文件放在正确的位置,没有任何问题。

但是在添加属性时 <classesDirectory>到我的 maven-jar-plugin 配置片段 src/main/java:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<classesDirectory>src/main/java</classesDirectory>
<finalName>${artifactId}</finalName>
<outputDirectory>${jarBuildPath}</outputDirectory>
</configuration>
</plugin>

然后在打包我的存档时,该死的,我的资源文件不再存在

来自 maven official documentation for the classesDirectory property ,它说 Directory containing the classes and resource files that should be packaged into JAR. 这对我来说很有意义,我的资源文件得到消失了,因为 maven 假定没有文件有权被打包,除非它在 ​​src/main/java 下。

但我最大的想法是在指定我的资源文件位置时(使用下面的选项之一),即使我指定了 <classesDirectory>,Maven 也会知道文件位置。条目。

与顶级<resources>入口

<resources>
<resource>
<directory>src/main/second-resources</directory>
</resource>
</resources>

或通过maven-resource-plugin

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<resources>
<resource>
<directory>src/main/second-resources</directory>
</resource>
</resources>
</configuration>
</plugin>

我可以告诉你,我对 maven 非常熟悉,但这个问题对我来说似乎很奇怪:当你有一些自定义资源目录时,是否不建议在 maven-jar-plugin 中使用?

任何人都可以对此有所了解吗?

BR.

最佳答案

classesDirectory 是目录

  • 编译器插件存储编译后的java类
  • resources-plugin 复制要包含在文件中的资源由 jar-plugin 创建。

你已经在jar-plugin配置中将其更改为你的java源代码目录。

因此,我想您的 jar 现在只包含 java 源文件。

这是您想要的,还是您只是想包含第二个资源文件源?

如果是后者,则只需添加:

<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/second-resources</directory>
</resource>
</resources>

无需向 jar 插件添加任何配置即可完成您想要的。请注意,如果您在默认的 src/main/resources 位置仍然有您想要的东西,则需要第一个 .. 部分。

关于java - 使用 Maven 打包资源文件和类的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com