我也遇到过这种情况。基本上,您希望能够使用一些易于访问的userConfig.properties文件(例如 内部)从Eclipse本地运行代码。此外,您希望提供一个已编译的可执行 JAR,其中包含一个外部 userConfig.properties,允许用户在不破解 JAR 的情况下配置应用程序。/src/main/resources
我的实现如下:运行将:mvn clean install
- 使用指定的参数创建可执行 JAR
mainClass
- 从 JAR 中排除 位于 中的所有文件
.properties
src/main/resources
- 将项目依赖项复制到项目根目录中的文件夹中
lib
- 将 位于 中的所有文件复制到项目根目录的文件夹中。请注意,此步骤对于 JAR 用户来说是一个可选的便利。您可以要求在目录中显式创建此文件。此目录通过清单有效地添加到运行时类路径中。
.properties
src/main/resources
conf
conf
conf
- 将此文件夹添加到清单,提供从可执行 JAR 访问该文件夹的权限
conf
在POM配置中将这些Maven插件相互结合使用将为您提供所需的内容。至于该解决方案的“最佳实践”;我不确定。
使用 maven-dependency-plugin,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
使用 maven-jar-plugin,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3</version>
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>package.path.to.your.main.class.MainClass</mainClass>
</manifest>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
使用 maven-resources-plugin 如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/conf</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
使用此项目设置,我可以使用一个配置在 Eclipse 中运行,并为我的用户提供要配置的属性文件,而无需相互依赖属性。