12

我正在创建控制台应用程序。我想在jar文件夹中的文件之外有配置文件,conf并希望将此文件夹注册为我的应用程序的类路径。

我运行mvn assembly:singlecommand ,得到一个 jar 文件,但是当我尝试运行这个 JAR 时java -jar MyApplication.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>
4

2 回答 2

11

这是我的错误,我不得不把

<Class-Path>./conf/</Class-Path>

并不是

<Class-Path>.conf/</Class-Path>
于 2013-03-29T06:27:17.007 回答
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 来匹配您的程序集描述符依赖项目标。

看待

于 2013-03-28T15:16:12.353 回答