Maven bamboo build schlägt fehl

  • Themenstarter Themenstarter Gelöschtes Mitglied 68249
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 68249

Gast
Moin zusammen,
ich lerne im Projekt immer wieder was neues. Mittlerweile haben wir uns zu so modernen Sachen, wie einem Build-System hinreißen lassen. Allerdings hängt das im vorletzten Schritt der Maven Ausführung und ich verstehe nicht ganz, warum. Also folgende Struktur möchte er ausführen:
Code:
[INFO] Reactor Build Order:
[INFO]
[INFO] atc                                                                [pom]
[INFO] persistence                                                        [jar]
[INFO] backend                                                            [war]
[INFO] app                                                                [ear]
[INFO] app_assembly                                                       [pom]
[INFO] copy                                                               [pom]

Das ist auch so weit richtig. Den Fehler bekommen wir im Schritt app_assembly. Eigentlich soll er da nur ein tar-Archiv erstellen und das beinhaltet nur eine einzige Datei.
Meine lokale Struktur ist:
Screenshot 2024-12-13 120134.png
In der asm.xml steht nur folgendes:
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>bundle</id>
    <formats>
        <format>tar</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>./src/tarFiles</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
Ergebnis ist dann im target-folder eine Datei atc-properties.tar.

Wir haben uns in Bamboo mal die Dateiliste ausgeben lassen:
Code:
build    13-Dec-2024 08:09:06    ./Implementierung/app_assembly:
build    13-Dec-2024 08:09:06    pom.xml
build    13-Dec-2024 08:09:06    src
build    13-Dec-2024 08:09:06   
build    13-Dec-2024 08:09:06    ./Implementierung/app_assembly/src:
build    13-Dec-2024 08:09:06    assembly
build    13-Dec-2024 08:09:06    tarfiles
build    13-Dec-2024 08:09:06   
build    13-Dec-2024 08:09:06    ./Implementierung/app_assembly/src/assembly:
build    13-Dec-2024 08:09:06    asm.xml
build    13-Dec-2024 08:09:06   
build    13-Dec-2024 08:09:06    ./Implementierung/app_assembly/src/tarfiles:
build    13-Dec-2024 08:09:06    atc.properties

Ergebnis ist folgender Fehler:
Code:
Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.7.0:single (create-archive) on project app_assembly: Failed to create assembly: Error creating assembly archive bundle: archive cannot be empty -> [Help 1]
Ich hab das lokal mal ausprobiert, also der Fehler kommt auch, wenn es den Ordner, aus dem er die Files holen will, nicht gibt. Ich kann es mir also nur so erklären, dass mein relativer Pfad aus Sicht von Bamboo falsch ist. Aber alle andern Spielereine, die ich mit den Pfaden probiert habe, waren fehlerhaft.
 
Hallo,

Die assembly.xml Datei sollte im Order src/main/assembly liegen und Du musst eine entsprechende Konfiguration angeben...Das gilt auch für die Properties datei... src/main/resources... (convention over configuration)..
XML:
<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.7.1</version>
        <configuration>
          <descriptors>
            <descriptor>src/assembly/src.xml</descriptor>
          </descriptors>
        </configuration>
        [...]
          ...
</project>

Also gehen wir mal von der Struktur aus:

Bash:
assembly
├── pom.xml
└── src
    └── main
        ├── assembly
        │   └── assembly.xml
        └── resources
            └── app.properties
Dann kannst Du mit dem folgenden Assembly-Descriptor:
XML:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

  <id>dist</id>
  <formats>
      <format>tar</format>
  </formats>

  <includeBaseDirectory>true</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>src/main/resources</directory>
      <outputDirectory>/</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>
Und der zugehörigen pom.xml Datei (Bei dir musst Du den parent block anpassen... und die ArtifactId):
XML:
<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>

  <parent>
    <groupId>org.test.parent</groupId>
    <artifactId>root</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </parent>

  <name>Packaging Test : Distribution</name>
  <artifactId>dist</artifactId>
  <packaging>pom</packaging>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>make-bundles</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>src/main/assembly/assembly.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
 
Moin, gerade getestet. Der Build läuft jetzt durch, jetzt liegt es an den Deployment Scripten der Abteilung, also nicht mehr mein Einflussbereich.
Danke für die Hilfe.
Das mit den Konventionen ist immer ein riesiges Problem für mich. Irgendwie findet man so Standards ganz schlecht beim Suchen, bzw. es wird nicht explizit angegeben, dass das der Standard sein sollte und andere vom Standard aus Gründen abgewichen sind.
 

Zurück
Oben