我使用Spring和Maven构建我的项目,并在src / main / resources路径(application.properties,log4j.properties)中有两个文件。如果我在IDE中打开我的项目并运行它,一切正常,可以更改application.properties文件中的值,并使用更改的值再次运行项目。但是,当我运行命令 mvn clean install 时,是的,我得到了.jar文件,但是我无法使用.properties文件配置这个.jar。此.jar在构建之前使用属性文件中的值。
我不知道这是否重要,但这是我在Spring应用程序上下文中定义属性文件的方式。
@PropertySource({"application.properties", "log4j.properties"})
public class AppConfig {
我将这些插件放在pom.xml文件中。好吗?你能帮我吗?看起来像build.jar项目在同一目录级别不知道.properties文件。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<!-- nothing here -->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>cz.cvut.fit.bouchja1.ensemble.main.EnsembleApp</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path> <!-- HERE IS THE IMPORTANT BIT -->
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
答案 0 :(得分:1)
对于运行时属性,请使用Properties Api
答案 1 :(得分:0)
好的,似乎解决方案就是这样:
@PropertySource({"file:application.properties", "file:log4j.properties"})
运行 mvn clean install 并创建.jar文件后,我可以在.jar旁边添加application.properties和log4j.properties文件,我可以使用属性文件配置项目。
但是:当我想从Netbeans运行项目时,存在一个问题,即文件“不存在:...因为它没有在类路径中指定。我认为这可能会有所帮助:
@PropertySource({"classpath:log4j.properties", "classpath:application.properties", "file:application.properties", "file:log4j.properties"})
但不是真的。尝试后会抛出异常:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to load bean class: cz.cvut.fit.bouchja1.ensemble.spring.AppConfig; nested exception is java.io.FileNotFoundException: application.properties (Directory or file does not exist)
编辑:这正是我寻找的解决方案How to Exclude poperties file from jar file?