我有一个文件夹。和这个文件夹中的jar应用程序。此外,我在此文件夹中有一个属性文件。我的conf。上课是:
@Configuration
@Import({com.blabla.MyClass.class})
@ComponentScan(basePackages = "com.blabla")
**@PropertySource("file:///worker.core.properties")**
@EnableTransactionManagement
public class MainConfig {
@Autowired
private Environment env;
此声明不会看到我的文件,但它位于同一目录中。如何指定相对路径,例如在@Import注释中?谢谢
答案 0 :(得分:3)
因此解决方案基于以下事实:我们可以通过指定清单文件中的项来扩展类路径。所以我们需要
1)将属性文件保留在/ src / main / resources
中2)从最后一个罐子里排除它
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
<archive>
<manifest>
<mainClass>com.blabla.daemon.MainListener</mainClass>
<classpathPrefix>lib/</classpathPrefix>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
3)在jar外面创建一个文件夹conf
4)使用maven
复制资源文件夹中的属性文件<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>
5)指定指向conf文件夹的清单文件(步骤1的一部分 - 请参见)
<archive>
<manifest>
<mainClass>com.blabla.daemon.MainListener</mainClass>
<classpathPrefix>lib/</classpathPrefix>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>