2010-02-25 8 views
5

Gibt es eine Möglichkeit, Maven-Artefakte zu erstellen, die nur Ressourcen, aber keine Quellen enthalten und die von anderen Projekten wiederverwendet werden können?Ist maven wiederverwendbares Ressourcenprojekt möglich?

Motivation ist das Folgende. Ich habe eine Bibliothek, die nur HTML/CSS/Javascript-Code enthält. Diese Bibliothek muss als Ressourcen in ein Kriegsprojekt gepackt werden. Im Moment baue ich Web-Archiv mit Ressourcen von single pom. Aber kann ich HTML/CSS/Javascript-Code in neue Artefakte trennen und in mehreren Kriegsprojekten wiederverwenden?

Antwort

9

Verwenden Maven Overlays. Weitere Beispiele finden Sie unter Manipulating WAR Overlays.

+1

@Pascal Thivent Sie scheinen Ihren Weg zu kennen, Maven Docs, es ist gut geschrieben, aber schlecht strukturiert, wenn Sie mich fragen ..Gibt es einen Link, der die gesamte Dokumentation von A bis Z enthält, vielleicht finde ich einige Dinge, die ich später noch verwenden kann, vielleicht sogar jetzt, aber ich weiß nicht, dass es existiert .. +1 – ant

+0

Das ist es! Vielen Dank. –

+0

@ c0mrade Die Dokumentation ist etwas, über das sich die Leute oft beschweren, also denke ich, dass du recht hast (Informationen sind da, aber schwer zu finden, was genau du sagst). Zum Glück weiß ich, wo ich suchen oder was ich jetzt suchen soll. Aber es gibt einige gute Bücher, die Ihnen helfen können, zum Beispiel http://www.sonatype.com/book/ (online verfügbar) oder http://www.packtpub.com/apache-maven-2-effective-implementations/ Buch. Sehr empfehlenswert. –

1

Sie können es mit der Maven assembly plugin tun.

+0

Wie genau kann ich das tun? –

+0

@Volodymyr Bitte überprüfen Sie das Benutzerhandbuch Ich verlinkt, es enthält auch Beispiele. Wenn Sie eine konkretere Frage haben, und uns mehr Details über Ihr Projekt erzählen, können wir Ihnen konkretere Antworten geben :-) –

+0

Soweit ich Distributionen verstehe, ist es etwas Endgültiges und nicht wiederverwendbar. Ist es nicht? Wenn das so ist, sind sie nicht dazu geeignet, das zu tun, was ich brauche. Mit maven-assembly-plugin kann ich eine Distributionsassembly für die Ressourcenbibliothek erstellen. In meinem Kriegspom kann ich dieses Artefakt sogar als Abhängigkeit benutzen. In diesem Fall erhalte ich target \ war-artefakt-1.0 \ WEB-INF \ lib \ resource-artefakt-1.0.jar anstelle des Inhalts der Distributions-Assembly, der im Verzeichnis target \ war-artefact-1.0 \ entpackt ist. In einer bereitgestellten Anleitung finde ich keine Möglichkeit, die Distribution Assembly in den Stamm des Webarchivs zu extrahieren. –

0

Ich kann mir nicht vorstellen, dass Maven Sie daran hindern würde, ein paar Ressourcen zusammen zu stören und das als Abhängigkeit in Ihr Webprojekt einzufügen.

Die Art und Weise, wie Sie auf die Ressourcen verweisen müssen, wäre jedoch etwas seltsam. Ich bin nicht gewohnt, CSS-Stylesheets als Java-Ressourcen innerhalb einer JAR-Datei in WEB-INF/lib zu laden.

Ich möchte sie als normale Web-Ressourcen beziehen, relativ zum Stamm der WAR-Datei, nicht über den Klassenlader.

+0

Ja, ich brauche keine Ressourcen, um gestört zu werden. Ich brauche sie in meinem Webordner und Webarchiv, um sie statisch zu beziehen, nicht über den Klassenlader. –

0

Dies ist eine ziemlich einfache Sache zu testen:

$ ls -R 
.: 
pom.xml src 

./src: 
main 

./src/main: 
resources 

./src/main/resources: 
README.txt content-is-here.txt 

$ mvn package 
... Maven doing it's thing... 

$ unzip -l target/test-1.0-SNAPSHOT.jar 
Archive: target/test-1.0-SNAPSHOT.jar 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 02-25-2010 16:18 META-INF/ 
     123 02-25-2010 16:18 META-INF/MANIFEST.MF 
     10 02-25-2010 16:18 content-is-here.txt 
     0 02-25-2010 16:18 README.txt 
     0 02-25-2010 16:18 META-INF/maven/ 
     0 02-25-2010 16:18 META-INF/maven/group/ 
     0 02-25-2010 16:18 META-INF/maven/group/test/ 
     626 02-25-2010 16:15 META-INF/maven/group/test/pom.xml 
     106 02-25-2010 16:18 META-INF/maven/group/test/pom.properties 
---------      ------- 
     865      9 files 
+0

Ich brauche zwei Projekte, nicht eins. Das erste Projekt sollte Ressourcen enthalten. Das zweite Projekt sollte Ressourcen vom ersten Projekt in den Krieg einschließen. –

+0

Dann ist ein WAR-Overlay was Sie wollen –

+0

Ja, ich kann jetzt sehen, dass Overlays genau das ist, was ich brauche. –

0

Dies kann durch Rütteln Ressource Artefakt und Auspacken in src/main/resources in Kriegsprojekt während validate Phase beispielsweise durchgeführt werden. Ressourcen pom ist trivial, aber Krieg pom wird folgendes enthalten:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>validate</phase> 
      <goals> 
      <goal>unpack</goal> 
      </goals> 
      <configuration> 
      <artifactItems> 
       <artifactItem> 
        <groupId>my.company</groupId> 
        <artifactId>resource-artifact</artifactId> 
        <version>1.0</version> 
        <overWrite>true</overWrite> 
        <outputDirectory>src/main/resources</outputDirectory> 
       </artifactItem> 
      </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
Verwandte Themen