如何使maven build添加资源到classpath?

我正在用简单的Maven安装使用maven构build一个jar。 如果我将一个文件添加到src/main/resources它可以在类path中find,但它有一个configuration文件夹,我希望该文件去,但将其移动到configuration文件夹内,使其从类path中消失。

2 Solutions collect form web for “如何使maven build添加资源到classpath?”

如果你把任何东西放在src/main/resources目录下,那么默认情况下它会在你的最后一个*.jar 。 如果您从其他项目引用它,并且无法在类path中find它,那么您执行了以下两个错误之一:

  1. *.jar没有正确加载(也许在path中input-o)?
  2. 例如: /src/main/resources/conf/settings.properties在类path中显示为classpath:conf/settings.properties

把你的configuration文件放到src / main / resources的子文件夹中的一个更好的方法是增强你的类path位置。 这对于Maven来说非常简单。

例如,将你的属性文件放在一个新的文件夹src / main / config中 ,并将下面的内容添加到你的pom中:

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

从现在开始, src / main / config下的所有文件都被认为是classpath的一部分(注意,如果需要的话,可以从最终的jar中排除一些文件):只需在build部分添加:

  <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <excludes> <exclude>my-config.properties</exclude> </excludes> </configuration> </plugin> </plugins> 

因此,当从IDE运行应用程序时,可以在类path中findmy-config.properties ,但在最终发行版中仍将保留在jar中)。

  • IntelliJ新build项目 - maven原型列表为空
  • 如何访问资源过滤的maven.build.timestamp
  • 如何使用apt-get在Ubuntu 17.04 / 16.10 / 16.04 LTS / 15.10 / 15.04 / 14.10 / 14.04 LTS / 13.10 / 13.04上安装Maven 3?
  • 如何使用maven-archetype-plugin创build一个项目? 什么是artefactId等?
  • 无法从资源目录加载属性文件
  • “mvn clean install”与“mvn install”有什么不同?
  • 如何在命令行中覆盖maven属性?
  • 在IntelliJ IDEA中导入Maven依赖关系