2013-03-28 7 views
9

nicht festlegen Ich erstelle Konsolenanwendung. Ich möchte Konfigurationsdateien außerhalb der jar Datei in conf Ordner haben und diesen Ordner als Klassenpfad für meine Anwendung registrieren.kann Classpath mit Maven-Assembly-Plugin

Ich rufe mvn assembly:single Befehl, eine Jar-Datei, aber wenn ich versuche, diese JAR mit java -jar MyApplication.jar ausführen, kann es nicht lesen Konfigurationsdateien.

Ich habe diesen Schnipsel in meinem 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

Es war mein Fehler zu setzen, musste ich setzen –

Antwort

8

Es war mein Fehler, ich hatte

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

und nicht

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

ich in der Regel verwenden Sie nicht die Montag Plugin Classpath Eintrag in MANIFESTEN sondern die maven-jar-Plugin mit dieser Konfiguration zu generieren:

<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> 

Ich verwende nur das Assembly-Plugin, um Abhängigkeiten (einschließlich transitive) in mein Build-Verzeichnis zu kopieren und das Distributions-Archiv zu erstellen. Sie können auch das Abhängigkeits-Plugin dazu verwenden. Wenn Sie Ihre Abhängigkeiten in ein Unterverzeichnis Ihres Verteilungsbaums kopieren möchten, verwenden Sie den classpathPrefix in der maven-jar-plugin-Konfiguration, um das Ziel der Assembly-Deskriptorabhängigkeiten zu finden.

Regard