Frage

Ich habe einen Super-pom definiert, in dem ich ein „Ressource“ Verzeichnis für Ressourcen festlegen. In einem meiner Projekte erstreckt sich mein pom, dass Super pom, und ich möchte eine zusätzliche Ressource hinzuzufügen. Ich habe versucht:

    <resources>
        <resource>
            <targetPath>/</targetPath>
            <directory>additionalDir</directory>                
        </resource>
    </resources>

Aber das führt in nur additionalDir in den Ressourcen zu sein und beinhaltet nicht die Ressourcen des Super-pom. Gibt es eine Möglichkeit die Super pom Ressourcen zu erweitern?

War es hilfreich?

Lösung

Das Verhalten Sie beschrieben haben soll.

Beachten Sie, dass Ihr Super POM erbt von Maven Standard POM und so ziemlich jeder Plugin, das Sie in Ihrem pom definieren Vorrang effektiv die Einstellung im Standard-POM. Als Beispiel Filterung auf der Standard-Ressource zu aktivieren, müssen Sie den Pfad in Ihrem POM angeben. Sie tun dies:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Nicht folgt aus:

<resources>
  <resource>
    <filtering>true</filtering>
  </resource>
</resources>

Das Standardverzeichnis nicht sprudeln für Sie, auch wenn Sie es dort angegeben haben. Es könnte eine spezielle MOJO, es für Sie zu tun, aber ich konnte nicht finden.

Andere Tipps

Siehe build-Helfer-Maven-Plugin Nutzung Seite.

Ja, Maven überschreiben die Ressourcen des übergeordneten POM, wenn neuen Ressource-Abschnitt neu zu definieren.

Allerdings ist eine einfache Möglichkeit, Ressourcen hinzuzufügen, ist zu

  1. Entfernen Sie den Abschnitt Ressourcen aus dem POM
  2. Zeigen Sie das effektive POM
  3. Kopieren Sie die Ressourcen aus dem effektiven POM in Ihr Projekt
  4. Ersetzen absolute Pfade mit relativ diejenigen
  5. Fügen Sie Ihre zusätzliche Ressourcen

Ich weiß, diese Frage ist ziemlich alt jetzt aber vielleicht wird jemand diese nützlich finden:

Sie können ganz einfach tun, dass mit der Maven Ressource Plugin.

Im Grunde, was es tut standardmäßig (Aufrufen der Ressourcen: Ressourcen Ziel) bewegt den Inhalt aller in den Build / Ressourcen Abschnitt aufgeführten Verzeichnisse in die ${project.build.outputDirectory} den deklarierten Filter Wenn Sie nun einige zusätzliche Ressourcen ohne diese Abschnitte Beeinflussung hinzufügen möchten, können Sie einfach die Ressourcen bewegen sich selbst. Ein nein, bedeutet dies nicht, ziehen und dort ablegen.

Die Maven Resources Pluginprovides ein Ziel namens resources:copy-resources, die genau tut das für Sie: Coping Dateien Filter von einem Ort zum anderen, oder als Plug-doc heißt es:

  

Sie können die mojo copy-Ressourcen nutzen, um Ressourcen zu kopieren, die nicht im Standard-Maven-Layout sind oder nicht in der Build / resources Elemente deklarierten und verbinden Sie es mit einer Phase

Der offensichtliche Vorteil im Vergleich zu den Build-Helfern, dass in anderen Lösungen vorgeschlagen wird, ist, dass, während die Build-Helfer nur in der Lage ist, Maßnahmen während der generate-sources Phase zu nehmen, die Ressourcen-Plugin in jeder Phase funktioniert. (Obwohl es wäre klug, es vor der Verpackungsstufe auszuführen)

Ein vollständiges Beispiel dafür, wie diese zu verwenden ist vorgesehen, hier , als Teil der Plugins Projektseite.

Was dies bedeutet ist, den Inhalt des nicht aufgelistet Ressourcenverzeichnis „src/non-packaged-resources“ Coping in "${basedir}/target/extra-resources". Aber da die Glas-Plugin (das schafft das jar-Archiv) im Grunde ein Archiv des Verzeichnisses zip erstellt „${project.build.outputDirectory}“ hat, können Sie es dort setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top