2017-12-22 4 views
1

Kleine EinführungWie innen

Ich bin ziemlich neu in Maven ein Maven-Projekt in Zip-Datei mit JAR-Dateien zu verpacken und ich konfrontiert mit dem Problem. Die Struktur meines Projekts sieht wie folgt aus:

|--root |--bin |-- some bash scripts |--config |-- some .properties files |--j2ee-apps |-- some web related files |--META-INF |-- MANIFEST.MF |--src |-- main |-- java |-- test |-- java

Tor

Nach mvn package Ausführung Ich habe die ZIP-Datei mit folgender Struktur zu erhalten:

|--zip |--bin |-- some bash scripts |--config |-- config.jar <-- jar with all .properties files inside |--j2ee-apps |-- some web related files |--META-INF |-- MANIFEST.MF |--lib |-- classes.jar <-- jar with all .class files inside (from src folder)

Ich habe versucht, maven-assembly-plugin zu verwenden, aber ich habe keine passenden Beispiele gefunden.

+0

Sie haben explizit definierte MANIFEST.MF so dass Sie ein OSGi-Bundle erstellen? Oder was ist der Zweck, eine eigene MANIFEST.MF zu definieren? – khmarbaise

+0

Ich brauche eine explizit definierte MANIFEST.MF für ATG-Anwendung. Weil ich mit atg platform arbeite. –

+0

Als Standard-Speicherort für die Datei MANIFEST.MF ist 'src/main/resources/META-INF/MANIFEST.MF'..weiterhin die Eigenschaften in' src/main/resources' ... Bash-Skripte in 'src/main/scripts '... – khmarbaise

Antwort

3

Ihre assembly.xml sollte aussehen wie

<assembly> 
    <id>zip</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <unpack>false</unpack> 
     <scope>runtime</scope> 
     <outputDirectory>lib</outputDirectory> 
     <useProjectArtifact>false</useProjectArtifact> 
    </dependencySet> 
    </dependencySets> 
    <fileSets> 
    <fileSet> 
    <directory>${project.build.directory}</directory> 
    <outputDirectory>/lib</outputDirectory> 
    <includes> 
     <include>*.jar</include> 
    </includes> 
    </fileSet> 
    <fileSet> 
     <directory>${project.basedir}/bin</directory> 
     <outputDirectory>/bin</outputDirectory> 
     <filtered>true</filtered> 
     <includes> 
     <include>**/*.*</include> 
     </includes> 
    </fileSet> 
    <!-- add fileSet entries for other folders under root --> 
    </fileSets> 
</assembly> 

bin ich nicht sicher, ob es eine Möglichkeit, META-INF zu setzen knapp zip nicht in Ihrem Projekt JAR-Datei.

Um Namen Sie ändern jar Sie benötigen maven-jar-plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
    <finalName>new_jar_name</finalName>     
    </configuration> 
</plugin> 
+0

Danke für die Antwort. Ich habe mein Projekt mit der von Ihnen bereitgestellten Datei assembly.xml gepackt. Als ich in eine finale .zip-Datei schaute, fand ich diese lib/groupId-version.jar. Ich möchte diese JAR-Datei genau wie classes.jar benennen. Weißt du wie das geht? –

+0

Meine Antwort aktualisiert – Ivan

+0

Inner JAR-Datei änderte Namen nicht nach dem Hinzufügen von Maven-JAR-Plugin. –