目前我有一个示例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的classesDirectory属性的官方文档中,它说包含应该打包到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配置中的java源代码目录。
因此,我想象你的jar现在只包含java源文件。
这是你想要的,还是你只是想要包含第二个资源文件源?
如果是后者,则只需添加:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/second-resources</directory>
</resource>
</resources>
应该完成你想要的,而不需要添加任何配置到jar插件。注意,第一个