我正在爲我的項目創建一個uber jar,即具有依賴項的jar。我有一堆項目使用的屬性文件。我希望能夠在運行我的項目之前更改這些屬性文件,所以我希望它們在jar之外。這是我的聚甲醛的有關章節Uber jar沒有讀取外部屬性文件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<artifactSet>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.json</exclude>
</excludes>
</artifactSet>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>path.to.main.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</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>
<include>**/*.json</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
所以基本上,我想創建一個文件夾${basedir}/target/conf
和所有.properties
和.json
文件複製到它。另外,這裏是我正在讀
InputStream in = this.getClass().getClassLoader().getResourceAsStream("filename.properties");
我現在面臨幾個問題
當我做
mvn clean install
的文件,我仍然看到classes
文件夾中的所有.properties
和.json
文件。他們不應該被排除在外?的
conf
文件夾的所有文件的創建,但是當我運行jar ADN試圖改變屬性,在更改不會拿起。我如何確保conf
文件夾被添加到類路徑中?我希望能夠在我正在開發,所以我不希望把它們放在一個單獨的文件夾,從文件夾
src/main/resources
加載.properties
和.json
文件。這可能嗎?