Maven Datei .zip erstellen

learningbydoing

Aktives Mitglied
Hallo zusammen,

ich möchte ein Java Programm, mit Maven, in ein .jar File bauen lassen und dieses anschließend in eine .zip Datei mit einer Dokumentation (.txt Datei abspeichern). Ich weis, dass man hierfür das Maven Assembly Plugin braucht. Leider bekomme ich bei meinen Versuchen nur Errors und im Netz findet man auch nicht viel zu dem Thema.

Hier meine Pom.xml:
Java:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>OrdnerErsteller</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    
    
    
   <build>
      <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
            </plugin>
      </plugins>
      
      <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
            </plugin>
        </plugins>
      </pluginManagement>
      
      <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" http://maven.apache.org/xsd/assembly-1.1.2.xsd">
                <id>src</id>
                    <formats>
                        <format>zip</format>
                    </formats>
                <fileSets>
                    <fileSet>
                        <directory>${project.basedir}</directory>
                            <includes>
                                <include>README*</include>
                                <include>LICENSE*</include>
                                <include>NOTICE*</include>
                                <include>pom.xml</include>
                            </includes>
                            <useDefaultExcludes>true</useDefaultExcludes>
                    </fileSet>
                    <fileSet>
                        <directory>${project.build.sourceDirectory}/src</directory>
                        <useDefaultExcludes>true</useDefaultExcludes>
                    </fileSet>
                </fileSets>
      </assembly>
   </build>
    
</project>

Vielen Dank schon einmal im Voraus!


Viele Grüße
Nic
 
K

kneitzel

Gast
Ich konfiguriere das immer direkt im Plugin, bei einem meiner Projekte sieht es so aus:

XML:
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <appendAssemblyId>false</appendAssemblyId>
                            <descriptors>
                                <descriptor>src/main/assembly/zip.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Die XML Datei mit der Beschreibung ist dann bei mir ein:
Java:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>zip</id>
    <includeBaseDirectory>false</includeBaseDirectory>

    <formats>
        <format>war</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.basedir}/src/main/html</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

Das musst Du natürlich anpassen:
- Du willst kein war sondern ein ZIP
- Du willst andere Inhalte - das fileSet musst Du also anpassen. Aber das hast Du ja prinzipiell schon.

Evtl. beim execution musst Du nach der Reihenfolge schauen - das ZIP kann ja erst nach dem bauen der jar Datei erfolgen. Das habe ich jetzt nicht näher betrachtet (Bin nebenher in einer Telko und kann daher nur grob meinen Aufbau zeigen).
 
K

kneitzel

Gast
Ach ja - noch meine Sicht, wieso der aktuelle Ansatz nicht funktioniert. Nach meinem Verständnis konfigurierst Du da jetzt nicht ein neues, zusätzliches ZIP File. Dein pom sagt ja: <packaging>jar</packaging>. Daher wird das assembply plugin von Maven ein jar File bauen und das, was Du da da als Daten gibst, ziehen maximal darauf ab.

Das wäre also ein Ansatz, den Du fahren kannst, wenn Du nur ein ZIP bauen wolltest. Aber Du mixt da jetzt zwei Konfigurationen durcheinander.

Das ist aber auch nur eine Einschätzung ohne tiefe Analyse / Betrachtung. Falls ich falsch liegen sollte, wird mich vielleicht noch jemand verbessern.
 

learningbydoing

Aktives Mitglied
Hallo kneitzel,

vielen dank für deine schnelle Antwort!
Habe jetzt das ganze mal ein bisschen angepasst und jetzt habe ich einen anderen Fehlercode als davor. Außerdem ist nichts mehr durchgängig rot angestrichen :).

[CODE lang="java" title="POM.XML"]<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>OrdnerErsteller</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

<name>Ordner-Ersteller</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>



<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/example.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>

<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>

</project>[/CODE]

[CODE lang="java" title="Example.XML"]<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>zip</id>
<includeBaseDirectory>false</includeBaseDirectory>

<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/assembly</directory>
<outputDirectory>C:\Users\A200006641\Desktop</outputDirectory>
</fileSet>
</fileSets>
</assembly>[/CODE]

Kann sein das ich gerade alles zusammen haue. Bin gerade neu in das Thema Maven gekommen
 
K

kneitzel

Gast
outputDirectory gibt an, wo etwas in dem ZIP File zu finden ist.

Sprich bei mir:
Java:
            <directory>${project.basedir}/src/main/html</directory>
            <outputDirectory>/</outputDirectory>
wurden die Dateien, die da in src/main/html liegen, direkt ins root des ZIP Files gepackt.

Das ist also kein lokaler Pfad für das ZIP File oder so. (Wir legen also beim Build nichts ins Root Verzeichnis :)).

Die ZIP Datei entsteht im target Ordner und heisst ebenso wie das jar File - also per default artefactid-version.zip oder so ähnlich.
 

learningbydoing

Aktives Mitglied
Ah ok das macht Sinn:)

Habe noch vergessen die Fehlermeldung hinzuzufügen:
Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.3.0:single (default-cli) on project OrdnerErsteller: Error reading assemblies: No assembly descriptors found. -> [Help 1]
 
K

kneitzel

Gast
Das klingt so, als hättest Du unter src/main/assembly die Datei example.xml nicht. Das evtl. einmal prüfen.
 

learningbydoing

Aktives Mitglied
Doch die example.xml ist dort vorhanden.
Ich habe das ganze jetzt nochmal umgeändert:
[CODE lang="java" title="Example.XML"]<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>Ordner-Ersteller</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>


<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/assembly</directory>
<outputDirectory>${project.build.directory}</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
<excludes>
<exclude>${project.build.finalName}.jar</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>[/CODE]
[CODE lang="java" title="POM.XML"]<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>OrdnerErsteller</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

<name>Ordner-Ersteller</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>



<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/example.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>

</project>[/CODE]

Ausgeführt wird es mit Netbeans->Projekt->Run Maven->goals->assembly:single

Jetzt habe ich den Fehlercode:
Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.3.0:single (default-cli) on project OrdnerErsteller: Failed to create assembly: Error creating assembly archive Ordner-Ersteller: archive cannot be empty -> [Help 1]
 
K

kneitzel

Gast
Ich würde jetzt vermuten, dass er keine jar Datei im angegebenen Ordner findet. Bist Du sicher, dass Deine Auswahl eine Datei findet?
Er sucht in src/main/assembly nach *.jar und lässt dabei ${project.build.finalName}.jar weg.

"archive cannot be empty" deutet darauf hin, dass er keine Datei gefunden hat, die er einpacken soll.
 
K

kneitzel

Gast
Also generell ist es immer noch etwas Dubios, was Du machst. Was setzt Du da aus welchem Grund als output Directory? Warum ist das nicht einfach /?
Wie gesagt: Das gibt nicht an, wo die ZIP Datei liegen soll!

Ich habe jetzt einfach einmal ein Beispiel gemacht - ein minimales pom, welches ein Java Programm baut als jar (stark vereinfacht - ich setze da jetzt kein Manifest gesetzt oder so) und dann am Ende ein ZIP File baut mit eben dieser jar Datei sowie einem assembly Verzeichnis, das dann Dateien enthält, die im ZIP File sein sollen.

[CODE lang="xml" title="pom.xml"]<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>de.kneitzel</groupId>
<artifactId>AssemblyTest</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<java.version>11</java.version>

<!-- Plugin Versions -->
<maven.assembly.version>3.3.0</maven.assembly.version>
<maven.compiler.version>3.8.1</maven.compiler.version>

<!-- Project Settings -->
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven.assembly.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
[/CODE]

[CODE lang="xml" title="zip.xml"]<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>zip</id>
<includeBaseDirectory>false</includeBaseDirectory>

<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/assembly</directory>
<excludes>
<exclude>zip.xml</exclude>
</excludes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>*.jar</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>[/CODE]

Das funktioniert recht gut - ein
./mvnw package baut alles

Das ZIP File enthält dann auch wie gewünscht das jar und die übrigen Dateien (bei mir nur eine README.txt):
Code:
konrad@zbook15:~/src/AssemblyTest$ ./mvnw package
<.... Viele Zeilen gelöscht da egal ...>
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.479 s
[INFO] Finished at: 2021-10-05T16:20:00+02:00
[INFO] ------------------------------------------------------------------------
konrad@zbook15:~/src/AssemblyTest$ unzip target/AssemblyTest-1.0-SNAPSHOT.zip
Archive:  target/AssemblyTest-1.0-SNAPSHOT.zip
  inflating: README.txt             
  inflating: AssemblyTest-1.0-SNAPSHOT.jar 
konrad@zbook15:~/src/AssemblyTest$

Anbei einfach einmal das ganze Projekt von mir als ZIP:
 

Anhänge

  • AssemblyTest.zip
    55 KB · Aufrufe: 2

learningbydoing

Aktives Mitglied
Guten Morgen,

vielen Dank für das ausführliche Beispiel!

Ich habe das ganze versucht auf mein Projekt zu übertragen, jetzt wieder mit einem anderen Fehler:

[CODE lang="java" title="POM.XML"]<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>ordnerersteller</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<properties>
<java.version>1.8</java.version>

<!-- Plugin Versions -->
<maven.assembly.version>3.3.0</maven.assembly.version>
<maven.compiler.version>3.8.1</maven.compiler.version>

<!-- Project Settings -->
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven.assembly.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>[/CODE]

[CODE lang="java" title="zip.XML"]<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>ordnerersteller</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/assembly</directory>
<excludes>
<exclude>zip.xml</exclude>
</excludes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>*.jar</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>[/CODE]

Hier noch die Ordnerstruktur:
1633507307188.png

Der Fehlercode:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project ordnerersteller: Fatal error compiling: invalid flag: --release -> [Help 1]

Wie gesagt, ich habe recht wenig Ahnung von Maven bzw. XML. Ich will einfach nur die Programm.java Datei in eine .jar compilen und anschließend in ein .zip stecken.

Schonmal vielen Dank für deine @kneitzel / eure Geduld!:rolleyes:
 
K

kneitzel

Gast
Du nutzt Java 1.8 und da kennt der Compiler noch kein release flag. Also einfach beim compiler plugin löschen:
XML:
                <configuration>
                    <release>${java.version}</release>
                </configuration>
 

learningbydoing

Aktives Mitglied
Hurra! Es hat funktioniert:D
Dann heißt es mal für mich, sich etwas mehr mit XML zu beschäftigen, um den Fehlercode zu verstehen.
Wusste nicht, was ich mit dem Release anfangen sollte.
 
K

kneitzel

Gast
Hurra! Es hat funktioniert:D
Super, das freut mich!
Dann heißt es mal für mich, sich etwas mehr mit XML zu beschäftigen, um den Fehlercode zu verstehen.
Wusste nicht, was ich mit dem Release anfangen sollte.
Die Fehlermeldung hat nicht so viel mit XML zu tun. Da geht es mehr um das Verständnis des Compiler Plugins und des Java Compilers selbst.

Aber das sind dann so Einstellungen, die man auch nicht ganz so oft braucht.
 

learningbydoing

Aktives Mitglied
Das stimmt, aber ich werde in Zukunft immer wieder mit Maven zu tun haben, weshalb sich das anbietet. Somit werde ich nicht dauerhaft mit Maven auf dem Kriegsfuß stehen :D
 

learningbydoing

Aktives Mitglied
Eine Frage hätte ich dann doch noch :) :

[CODE lang="java" title="zip.XML"]<fileSet>
<directory>${project.basedir}/src/main/assembly</directory>
<excludes>
<exclude>zip.xml</exclude>
</excludes>
<outputDirectory>/</outputDirectory>
</fileSet>[/CODE]

Was macht dieser Teil des Codes, bzw. was sagt der aus? Das die zip.xml Datei nicht in der .zip Datei enthalten sein soll?
 

learningbydoing

Aktives Mitglied
Bzw. noch eine😅:
Ich habe jetzt mit Maven die .jar erstellt und zusätzlich noch eine Batch-Datei hinterlegt, welche das Programm ausführen kann. Beides wird in ein .zip File gepackt und ausgegeben. Nach dem entpacken des Ordners, funktioniert das ausführen mit der Batch nicht. -> ganz normales clean and Build der .jar und anschließend gleiche Batch funktionieren aber. Woran kann das liegen oder muss man da was beachten?
 
K

kneitzel

Gast
Die Idee war, dass in src/main/assembly generell Dateien kommen, die mit in das zip File sollen. In dem Projekt hatte ich exemplarisch eine README.txt dahin getan.

Wenn da etwas nicht klappt, wäre die Frage: Was für Meldungen bekommst du
a) beim Bau mit Maven - Nutz einfach den Maven-Wrapper zum bauen, dann hast Du die Ausgabe ja auch zur Hand.
Wenn es nach einem clean geht, dann wäre die Frage, was denn an anderen Meldungen kommt, wenn Du zwei mal mvnw package aufrufst.

b) Was sind die Unterschiede bei den entsprechenden ZIP Dateien?

Und wie sieht die ganze pom.xml jetzt bei Dir aus? Hast Du evtl. ein kleines Beispiel-Projekt das Du nach einem mvnw clean zusammen packen kannst um es weiter zu geben?
 

learningbydoing

Aktives Mitglied
Also:
[CODE lang="java" title="POM.XML"]<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>ordnerersteller</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<properties>
<java.version>1.8</java.version>

<!-- Plugin Versions -->
<maven.assembly.version>3.3.0</maven.assembly.version>
<maven.compiler.version>3.8.1</maven.compiler.version>

<!-- Project Settings -->
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven.assembly.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>[/CODE]
[CODE lang="java" title="zip.XML"]<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>ordnerersteller</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>


<!-- Bauteile der .zip Datei ermitteln -->
<fileSets>
<!-- Welche Dateien aus dem angegebenen Pfad inkludiert / exkludiert werden sollen -->
<fileSet>
<directory>${project.basedir}/src/main/assembly</directory>
<includes>
<include>*.txt</include>
<include>START.bat</include>
</includes>
<excludes>
<exclude>zip.xml</exclude>
</excludes>
<outputDirectory>/</outputDirectory>
</fileSet>
<!-- Die erstellte .jar-Datei hinzufügen -->
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>*.jar</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>[/CODE]

Als Meldung, bei Maven, bekomme ich: Build Success

Entpacken auf den Desktop und ausführen der .bat, öffnet sich kurz ein Konsolenfenster und schließt sich wieder sofort.
Wenn ich die Programm .jar ohne Maven mit clean and build erstelle und mit der gleichen .bat zusammen in einem Ordner ausführe, funktioniert es einwandfrei.

Hier das .zip file:
 

Anhänge

  • ordnerersteller-1.0-SNAPSHOT.zip
    2,6 KB · Aufrufe: 2

LimDul

Top Contributor
Probier das Programm mal aus der Kommandozeile auszuführen im Desktop Ordner. Evtl - wir kennen ja den Java Code nicht - kommt der mit dem Desktop Ordner nicht klar.
 

learningbydoing

Aktives Mitglied
Das ist der Code (muss noch verbessert werden, funktioniert aber):

[CODE lang="java" title="Programm.java"]
import java.io.File;
import java.util.Scanner;


public class Programm {


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// Wo soll der Ordner erstellt werden?
String path1 = System.getProperty("user.home") + "/Desktop/";
// Abfrage des Ordnernamens vom User
System.out.println("Gib den Namen für den Ordner ein: ");
path1 = path1 + sc.nextLine();
// Initialisierung der File Klasse
File f0 = new File(path1);
// Ordner erstellen
boolean bool0 = f0.mkdir();

// Die 3 Ordner erstellen
String path2;
path2 = path1 + "/PNGs";
File f1 = new File(path2);
boolean bool1 = f1.mkdir();

String path3;
path3 = path1 + "/JPEGs";
File f2 = new File(path3);
boolean bool2 = f2.mkdir();

String path4;
path4 = path1 + "/RAWs";
File f3 = new File(path4);
boolean bool3 = f3.mkdir();

// Überprüfung, ob alles funktioniert hat

if(bool0){
System.out.println("Folder is created successfully");
}else{
System.out.println("Error Found!");
}
if(bool1){
System.out.println("Folder is created successfully");
}else{
System.out.println("Error Found!");
}

if(bool2){
System.out.println("Folder is created successfully");
}else{
System.out.println("Error Found!");
}

if(bool3){
System.out.println("Folder is created successfully");
}else{
System.out.println("Error Found!");
}
}
}
[/CODE]
 
K

kneitzel

Gast
Du gibst ja auch keinerlei Mainclass an. Damit wird zwar ein jar gebaut aber das ist nicht ausführbar.

Das kannst Du anpassen:
a) Du kannst die bat so anpassen, dass das jar file nur als classpath gegeben wird und du die Main-Klasse mit angibst
b) Du kannst natürlich das Projekt anpassen, so dass da ein Manifest gebaut wird.

Ansonsten frage ich mich, was für ein clean / build du ausführst - du solltest generell Maven Build durchführen - auch von der IDE. Vermutlich hast Du irgendwelche IDE Projekt-Settings gemacht, so dass da irgendwas anderes gebaut wird? Aber das ist nur eine Vermutung.

Die
Java:
            <includes>
                <include>*.txt</include>
                <include>START.bat</include>
            </includes>
sollten ansonsten nicht notwendig sein, denn ohne die sollte eigentlich alles eingepackt werden, das in dem Verzeichnis ist.

Aber dann einfach einmal im Manifest die Mainclass setzen:

Java:
    <properties>
        <main.class>TestApp</main.class>
        <maven.jar.version>3.2.0</maven.jar.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven.jar.version}</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>${main.class}</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

(Nur Auszüge - einmal die properties, die dazu gekommen sind und dann das plugin, das hinzu gekommen ist. In meinem AssemblyTest war die Hauptklasse einfach TestApp)
 

learningbydoing

Aktives Mitglied
Du gibst ja auch keinerlei Mainclass an. Damit wird zwar ein jar gebaut aber das ist nicht ausführbar.

Das kannst Du anpassen:
a) Du kannst die bat so anpassen, dass das jar file nur als classpath gegeben wird und du die Main-Klasse mit angibst
b) Du kannst natürlich das Projekt anpassen, so dass da ein Manifest gebaut wird.

Ansonsten frage ich mich, was für ein clean / build du ausführst - du solltest generell Maven Build durchführen - auch von der IDE. Vermutlich hast Du irgendwelche IDE Projekt-Settings gemacht, so dass da irgendwas anderes gebaut wird? Aber das ist nur eine Vermutung.

Die
Java:
            <includes>
                <include>*.txt</include>
                <include>START.bat</include>
            </includes>
sollten ansonsten nicht notwendig sein, denn ohne die sollte eigentlich alles eingepackt werden, das in dem Verzeichnis ist.

Aber dann einfach einmal im Manifest die Mainclass setzen:

Java:
    <properties>
        <main.class>TestApp</main.class>
        <maven.jar.version>3.2.0</maven.jar.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven.jar.version}</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>${main.class}</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

(Nur Auszüge - einmal die properties, die dazu gekommen sind und dann das plugin, das hinzu gekommen ist. In meinem AssemblyTest war die Hauptklasse einfach TestApp)
Daran hat es gelegen:D! Habe das jetzt eingebaut und es funktioniert. Komisch, das die Main class nicht schon automatisch "eingebaut" wird. Dann muss man ja wirklich alles definieren, damit Maven alles richtig zusammen fügt.:rolleyes:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
C bash-datei erstellen zum übergeben der parameter Tools - Maven, Gradle, Ant & mehr 9
F Erstellen einer Policy-Datei Tools - Maven, Gradle, Ant & mehr 8
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
H Maven NetBeans Java Application ohne Manifest-Datei Tools - Maven, Gradle, Ant & mehr 7
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
JWK Kann ich mit einem Scanner eine Datei mehrmals lesen? Tools - Maven, Gradle, Ant & mehr 3
ruutaiokwu GIT/SourceTree Client: Es wurden keine Änderungen an dieser Datei erkannt, oder es handelt sich um eine Binärdatei (?) Tools - Maven, Gradle, Ant & mehr 5
L Fertige .jar-Datei als Dependency distributen Tools - Maven, Gradle, Ant & mehr 1
VfL_Freak Icon einer JNLP-Datei ändern ?? Tools - Maven, Gradle, Ant & mehr 2
H Eclipse/Runnable JAR file/.fxml-Datei Tools - Maven, Gradle, Ant & mehr 1
D Ant JAR-Ressourcen in JNLP-Datei sind nicht von demselben Zertifikat signiert Tools - Maven, Gradle, Ant & mehr 2
N Ant [Android] Skript zum bauen einer .pak-Datei. Tools - Maven, Gradle, Ant & mehr 1
S Maven CSV-Datei mit Maven einlesen schlägt fehl Tools - Maven, Gradle, Ant & mehr 5
D Ant Consolen Output in Datei schreiben Tools - Maven, Gradle, Ant & mehr 5
D Jar Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 3
K Applet als Jar-Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 14
S Webstart Webstart einer Applikation mit einer veralteten JNLP-Datei Tools - Maven, Gradle, Ant & mehr 6
V Datei automatisch "Jaren"? Tools - Maven, Gradle, Ant & mehr 3
E Ant Concat schreibt keine neue Zeile in CSV-Datei Tools - Maven, Gradle, Ant & mehr 4
D Maven, ausführbare jar-Datei unter spziellen Bedingungen - welche Plug-ins? Tools - Maven, Gradle, Ant & mehr 20
D [maven] Umgang mit property-Datei Tools - Maven, Gradle, Ant & mehr 2
A Applet: Html Datei und Class Datei nicht im selben Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
G Maven Mit Maven Assemblieren und über Profiles eine properties-Datei manipulieren Tools - Maven, Gradle, Ant & mehr 2
D Maven Install Plugin: Einzelne Datei installen ? Tools - Maven, Gradle, Ant & mehr 16
K Webstart .class Datei über Reflection laden Tools - Maven, Gradle, Ant & mehr 3
S Mittel Applet Datei an ein Webserver übertragen Tools - Maven, Gradle, Ant & mehr 2
G Webstart Problem mit Adressierung bei Laden von Datei aus jar (Webstart) Tools - Maven, Gradle, Ant & mehr 5
B Jar-Datei funktioniert nicht Tools - Maven, Gradle, Ant & mehr 4
K Binärdatei aus jar auslesen und lokal als Datei speichern Tools - Maven, Gradle, Ant & mehr 2
D Maven - wo gehört eine .properties-Datei hin? Tools - Maven, Gradle, Ant & mehr 20
fastjack Jar-Datei Versionen Tools - Maven, Gradle, Ant & mehr 3
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
C Property-Datei für Web Start Tools - Maven, Gradle, Ant & mehr 2
R Web Start / jnlp datei Tools - Maven, Gradle, Ant & mehr 28
A jar datei trotz zertifikat nich aus applet ausführbar Tools - Maven, Gradle, Ant & mehr 4
A Auslesen einer .txt Datei auf Server mit Digest Authentifizierung Tools - Maven, Gradle, Ant & mehr 2
ABstraCT Mit Applet in ne Datei auf seinem Server schreiben. Tools - Maven, Gradle, Ant & mehr 10
S Datei-/Verzeichniszugriff von signiertem Applet Tools - Maven, Gradle, Ant & mehr 6
T Applet soll Datei lesen (darf es aber nicht.) Tools - Maven, Gradle, Ant & mehr 3
G Ant in einer Batch Datei Tools - Maven, Gradle, Ant & mehr 6
B Applet (Class-Datei(en)) in Html-Seite einbinden - Clipboard Tools - Maven, Gradle, Ant & mehr 13
B Applet als ausführbare JAR-Datei? Tools - Maven, Gradle, Ant & mehr 4
T Webstart unter Mac: Zugriff auf XSLT-Datei verweigert Tools - Maven, Gradle, Ant & mehr 4
T jnlp-Datei: Fehler in Zeile 0? Tools - Maven, Gradle, Ant & mehr 6
A Mit einem Applet eine txt-Datei einlesen und ausgeben. Tools - Maven, Gradle, Ant & mehr 6
M JEditorPane und html Datei Tools - Maven, Gradle, Ant & mehr 3
H Applet Access Denied - Beim zugriff auf eine .txt Datei Tools - Maven, Gradle, Ant & mehr 8
J Applet liest Datei nicht neu ein (nur online) Tools - Maven, Gradle, Ant & mehr 16
S Applet als ausführbare Jar-Datei Tools - Maven, Gradle, Ant & mehr 13
P .au-Datei, man hört nur blobb blobb blobb Tools - Maven, Gradle, Ant & mehr 6
H Applet in HTML-Datei - Classloader Fehlermeldung Tools - Maven, Gradle, Ant & mehr 7
M datei mit html file an applet übergeben Tools - Maven, Gradle, Ant & mehr 3
P Problem beim Senden einer Datei Tools - Maven, Gradle, Ant & mehr 5
G datei auf server speichern Tools - Maven, Gradle, Ant & mehr 8
R NullPointerException bei Einlesen von txt-Datei Tools - Maven, Gradle, Ant & mehr 12
T Highscores aus Applet-Spiel in XML-Datei speichern Tools - Maven, Gradle, Ant & mehr 7
G datei von server lesen - falsche version Tools - Maven, Gradle, Ant & mehr 2
G Datei in jar schreiben Tools - Maven, Gradle, Ant & mehr 10
A JNLP Datei aus Application laden Tools - Maven, Gradle, Ant & mehr 4
D Libarys in eine JAR Datei mit eclipse Tools - Maven, Gradle, Ant & mehr 8
thE_29 Applet Datei speichern! Tools - Maven, Gradle, Ant & mehr 42
M Eine Datei lesen mit einem Applet (gleicher Server) Tools - Maven, Gradle, Ant & mehr 2
F Eine lokale .txt Datei auf Server upladen und downloaden Tools - Maven, Gradle, Ant & mehr 3
L Datei vom Client auf Server hochladen Tools - Maven, Gradle, Ant & mehr 4
0 auf ne datei aufm server zugreifen Tools - Maven, Gradle, Ant & mehr 6
H Zugreifen auf Datei über ein Applet Tools - Maven, Gradle, Ant & mehr 13
T Java Applet Rechte zum Datei schreiben geben Tools - Maven, Gradle, Ant & mehr 3
F Aus Datei lesen und schreiben Tools - Maven, Gradle, Ant & mehr 26
D Problem beim einbinden von jar und class datei Tools - Maven, Gradle, Ant & mehr 8
S Ausgabe einer Methode schreibt in HTML Datei Tools - Maven, Gradle, Ant & mehr 8
R Applet schreibt in Datei auf Server - warum funktionierts ? Tools - Maven, Gradle, Ant & mehr 2
G Auf Datei zugreifen Tools - Maven, Gradle, Ant & mehr 4
M Applet in HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 9
R Auf WebServer eine Datei schreiben? Tools - Maven, Gradle, Ant & mehr 6
R Datei Download? Tools - Maven, Gradle, Ant & mehr 9
A Wie kann man Quelltext von .class Datei sehen? Tools - Maven, Gradle, Ant & mehr 2
G Applet in die HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 3
G Mit Applet in Datei auf Webserver schreiben Tools - Maven, Gradle, Ant & mehr 4
G Applets in eine Datei schreiben lassen Tools - Maven, Gradle, Ant & mehr 2
R Datei in Java-Applet einlesen Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
Thallius Jenkins nur zip file erstellen? Tools - Maven, Gradle, Ant & mehr 3
L Jar mit externen Libaries erstellen Tools - Maven, Gradle, Ant & mehr 2
VfL_Freak Desktopverknüpfung über den Java-Cache erstellen Tools - Maven, Gradle, Ant & mehr 0
J Updates erstellen Tools - Maven, Gradle, Ant & mehr 3
J Wie Jar-Dateien in NetBeans erstellen? Tools - Maven, Gradle, Ant & mehr 4
M Webstart Desktop Icon erstellen Tools - Maven, Gradle, Ant & mehr 2
B Subversion JAR erstellen nach Commit möglich? Tools - Maven, Gradle, Ant & mehr 5
H WAR Archiv erstellen Tools - Maven, Gradle, Ant & mehr 2
M eigenes Plugin erstellen Maven Tools - Maven, Gradle, Ant & mehr 4
D Windows Desktop Verknüpfung erstellen Tools - Maven, Gradle, Ant & mehr 4
N Maven2 Projekt unter Hudson mit SVN Repository erstellen Tools - Maven, Gradle, Ant & mehr 4
N JAR Archive mit mehreren Klassen und anderen JAR Files erstellen Tools - Maven, Gradle, Ant & mehr 6
T Jar erstellen mit Build Version? Tools - Maven, Gradle, Ant & mehr 2
K Jar erstellen mit eclipse Tools - Maven, Gradle, Ant & mehr 32
J keytool um für Tomcat keystore file zu erstellen Tools - Maven, Gradle, Ant & mehr 1

Ähnliche Java Themen

Neue Themen


Oben