我正在创建控制台应用程序。我想在jar
文件夹中的conf
文件之外放置配置文件,并希望将此文件夹注册为我的应用程序的类路径。
我运行mvn assembly:single
命令,得到一个jar文件,但是当我尝试用java -jar MyApplication.jar
运行这个JAR时,它无法读取配置文件。
我的pom.xml
<build>
<finalName>MyApplication</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.7</version>
<configuration>
<projectNameTemplate>
[artifactId]-[version]
</projectNameTemplate>
<wtpmanifest>true</wtpmanifest>
<wtpapplicationxml>true</wtpapplicationxml>
<wtpversion>2.0</wtpversion>
<manifest>
${basedir}/src/main/resources/META-INF/MANIFEST.MF
</manifest>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.my.test.App</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
答案 0 :(得分:9)
这是我的错,我不得不把
<Class-Path>./conf/</Class-Path>
而不是
<Class-Path>.conf/</Class-Path>
答案 1 :(得分:2)
我通常不使用程序集插件在MANIFEST中生成类路径条目,而是使用此配置生成maven-jar-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<addExtensions>false</addExtensions>
<mainClass>com.my.test.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
我只使用程序集插件将依赖项(包括可传递的)复制到我的构建目录中,并创建分发存档。您也可以使用依赖插件来执行此操作。 如果要将依赖项复制到分发树的子目录中,请使用maven-jar-plugin配置中的classpathPrefix来匹配程序集描述符依赖项目标。
方面