maven-assembly, die Vermeidung vollständigen Pfad in der zip-Datei?

Ich habe ein multi-Modul-Projekt-enthält 2 Module (jedes mit seiner eigenen pom.xml) und ein Elternteil pom.xml Hinweis auf die Module.

Wenn ich "mvn clean package" auf der parent-pom, jedes Projekt endet mit einer zip-Datei unter eigene Ziel-Ordner. Ich würde gerne Paket zip-Datei, enthält jedes Modul zip-Datei in der zip-Datei der root-Ordner, aber ich habe einige Probleme dabei.

Habe ich erstellt eine assembly-Datei in der übergeordneten pom.xml Ordner:

<!-- Release distribution -->
<assembly>
<id>release</id>
<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<fileSets>
    <fileSet>
        <directory>${basedir}/projectA/target/</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>*.tar.gz</include>
        </includes>
    </fileSet>
    <fileSet>
        <directory>${basedir}/projectB/target/</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>*.tar.gz</include>
        </includes>
    </fileSet>
</fileSets>
</assembly>

Während die oben genannten arbeiten, wenn wir beginnen, das hinzufügen von mehr und mehr Module für dieses Projekt, es wird sehr ärgerlich sein, um zu halten Aktualisierung dieser Versammlung.

Idealerweise würde ich gerne für Sie ein, um automatisch gehen Sie einfach in jedes Ziel-Ordner für ein Modul und erhalten eine zip-Datei drin.

Dies können Sie tun,

...
<fileSet>
        <directory>${basedir}</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>**/target/*.tar.gz</include>
        </includes>
    </fileSet>

aber das Problem hier ist die zip-Datei enthält vollständige Pfade, also anstatt zip-Dateien im root-Ordner der zip-Datei haben projectA/target/xxxx.zip und projectB/target/xxxx.zip das ist genau das, was ich nicht will.

Gibt es eine Möglichkeit, um eine einfache Montage in maven, damit ich nicht haben, um es zu aktualisieren, jedes mal wenn ich ein neues Modul hinzufügen, und nicht die volle Pfade innerhalb der zip?

BEARBEITEN 1

Wie es aussieht wird das einfach nicht möglich. Entweder bekommst du eine schön strukturierte zip-Datei mit einem schwer zu pflegen, Montage oder erhalten Sie eine einfach zu pflegen, aber annoingly strukturierte zip-Datei.
Ich lasse das unbeantwortet, bis ich kann mich finden eine passende Lösung

EDIT 2

Wieder auf der Suche nach einer Lösung für das wieder. Bezüglich khmarbaise Lösung unten geschrieben gibt es ein paar Probleme mit ihm:
- Er stützt sich auf Baugruppen-Abhängigkeiten, in meinem Fall ich möchte nur eine Montage von Baugruppen (Das sind mehr wie Dateigruppen und nicht dependencyset)
- Die Tatsache, dass er sich auf mich, manuell festzulegen, welche Projekte ich möchte in der assembly enthalten. Ich habe bereits diese Informationen in die parent pom, die angibt, welche Module sollen gebaut werden, so dass, wenn ich entfernen Sie ein Modul aus der parent-pom, so dass es nicht mehr gebaut, der Zusammenbau sollte schon wissen, dass Sie und überspringen Sie die Kommissionierung, das Projekt (Grund für die fileset scheint zu funktionieren so gut, außer für die beschissenen, nicht kontrollierbare Pfad in der assembly-zip). Ich sollte nicht haben, um manuell zu Chaos mit, welche Module ich möchte enthalten andere als einfach entfernen hinzufügen von Modulen aus der pom-ich bin mit der Montage aus.

Hat niemand wirklich einmal ein ähnliches problem?

  • Warum müssen Sie Paket jedes Modul in eine tar.gz oder was auch immer-Archiv?
  • Weil es macht es einfacher für die Freigabe, da in diesem Fall kann es eine Version mit mehreren Anwendungen im innen -
  • Hast du es geschafft, dies zu lösen, in das Ende?
Schreibe einen Kommentar