2010-02-25 17 views
5

Esiste la possibilità di creare artefatto di Maven che conterrà solo risorse ma senza risorse e che può essere riutilizzato da altri progetti?Il progetto di risorse riutilizzabili può essere utilizzato?

La motivazione è la seguente. Ho una libreria che contiene solo il codice html/css/javascript. Questa libreria deve essere impacchettata come risorse nel progetto di guerra. Per ora costruisco l'archivio web con le risorse per singolo pom. Ma sono in grado di separare il codice html/css/javascript in un nuovo artefatto e riutilizzarlo in diversi progetti di guerra?

risposta

9

Usa Maven Overlays. Vedi Manipulating WAR Overlays per ulteriori esempi.

+1

@Pascal Thivent sembra che tu stia conoscendo il tuo modo di conoscere i documenti Maven, è ben scritto ma strutturato male se me lo chiedi ..c'è un link che contiene tutta la documentazione dalla A alla Z, forse trovo alcune cose che posso usare più tardi, forse anche adesso ma non so che esista .. +1 – ant

+0

Questo è tutto! Grazie. –

+0

@ c0mrade La documentazione è qualcosa di cui le persone si lamentano spesso quindi suppongo che tu abbia ragione (le informazioni sono lì ma difficili da trovare, che è esattamente quello che stai dicendo). Fortunatamente, so dove cercare o cosa cercare ora. Ma ci sono alcuni buoni libri che possono aiutarti, ad esempio http://www.sonatype.com/book/ (disponibile online) o http://www.packtpub.com/apache-maven-2-effective-implementations/ libro. Altamente raccomandato. –

1

È possibile farlo con lo Maven assembly plugin.

+0

Come posso fare esattamente questo? –

+0

@Volodymyr Si prega di consultare la guida dell'utente che ho collegato, contiene anche esempi. Se hai una domanda più concreta, e dicci più dettagli sul tuo progetto, possiamo darti risposte più concrete :-) –

+0

Per quanto ne so, è un qualcosa di definitivo e non riutilizzabile. Non è vero? Se è così, non sono adatti a fare ciò di cui ho bisogno. Con maven-assembly-plugin posso creare un assembly di distribuzione per la libreria di risorse. Nella mia guerra posso anche usare questo artefatto come dipendenza. In tal caso otterrò destinazione \ war-artefatto-1.0 \ WEB-INF \ lib \ resource-artifact-1.0.jar invece del contenuto dell'assembly di distribuzione decompresso nella cartella target \ war-artifact-1.0 \. In una guida fornita non trovo alcun modo per estrarre il gruppo di distribuzione nella radice dell'archivio web. –

0

Non immagino che Maven ti possa impedire di scomporre alcune risorse insieme e di aggiungerlo come dipendenza dal tuo progetto web.

Tuttavia, il modo in cui è necessario fare riferimento alle risorse sarebbe un po 'strano. Non sono abituato a caricare fogli di stile CSS come risorse java all'interno di un file jar all'interno di WEB-INF/lib.

Vorrei fare riferimento a loro come normali risorse Web, relative alla radice del file WAR, non tramite il classloader.

+0

Sì, non ho bisogno di risorse per essere scorticato. Ho bisogno che esista nella mia cartella web e nell'archivio web per riferirli staticamente, non tramite il classloader. –

0

Questa è una cosa abbastanza semplice da prova:

$ 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

Ho bisogno di avere due progetti, non uno. Il primo progetto dovrebbe contenere risorse. Il secondo progetto dovrebbe includere risorse dal primo progetto alla guerra. –

+0

Quindi una sovrapposizione di WAR è ciò che desideri –

+0

Sì, ora vedo che le sovrapposizioni sono esattamente ciò di cui ho bisogno. –

0

questo può essere fatto da stridente artefatto delle risorse e l'estrazione in src/main/risorse nel progetto di guerra durante la fase di validate per esempio. pom risorse è banale, ma pom guerra conterrà il seguente:

<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> 
Problemi correlati