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

Java 使用Maven打包资源文件和类的最佳实践,java,maven,jar,maven-resources-plugin,maven-jar-plugin,Java,Maven,Jar,Maven Resources Plugin,Maven Jar Plugin,目前,我有一个示例maven项目,其中包含以下build部分,其中我指定了第二个资源位置目录: ... src/主要/第二资源 org.apache.maven.plugins ,它说目录包含应该打包到JAR中的类和资源文件。这对我来说很有意义,而且我的资源文件消失是很公平的,因为maven假设没有文件有权打包,除非它在src/main/java下 但我最大的想法是,当指定我的资源文件位置(使用下面的选项之一)时,Maven会知道文件位置,即使我已经指定了条目 具有顶级条目 src/主要/第

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


...
src/主要/第二资源
org.apache.maven.plugins
,它说目录包含应该打包到JAR中的类和资源文件。这对我来说很有意义,而且我的资源文件消失是很公平的,因为maven假设没有文件有权打包,除非它在src/main/java下

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

具有顶级
条目


src/主要/第二资源
或者通过maven资源插件


org.apache.maven.plugins
maven资源插件
2.6
src/主要/第二资源
我可以告诉你,我对maven非常熟悉,但这个问题对我来说似乎很奇怪:当你有一些自定义资源目录时,不建议在maven jar插件中使用它吗?

谁能帮我解释一下吗

BR.

classesDirectory是

  • 编译器插件存储已编译的java类
  • 资源插件复制要包含在文件中的资源 由jar插件创建
您已经在jar插件配置中将其更改为java源代码目录

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

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

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

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

src/main/resources
src/主要/第二资源

应该在不向jar插件添加任何配置的情况下完成您想要的任务。请注意,第一个。。如果您在默认的src/main/resources位置仍有所需的内容,则需要使用节。

您想实现什么?默认情况下包含src/main/resources。@b谢谢您的关注。是的,我知道这两个,但实际上我在拥有另一个cutom资源文件目录/路径时想到了这一点。您将其放在顶级元素中,而不是插件配置中。标记
应包含
.class
文件,因此它应指向
目标/类
(这是默认值)而不是
src/main/java
。如果您想捆绑源文件,请查看Yes,
class
始终是编译文件(即类文件)的提示,
source
另一方面是
.java
文件,因此如果我想在maven jar插件中添加不同的
,我还应该更改资源和编译插件目标路径(它们存储
.class
和资源文件*的位置),对吗?我该怎么做?你是不是故意想在你的jar中包含java源文件?也许你应该确切地解释一下你想做什么。现在主要的问题已经很清楚了,因为所有这些都是关于混淆类和源的。但我只是想知道如何让maven jar插件从另一个目录中读取类除了目标/类之外?如何分别配置maven资源/编译插件?有什么想法吗?