2010-02-25 10 views
5

¿Existe alguna posibilidad de construir un artefacto de experto que contenga solo recursos pero sin fuentes y que pueda ser reutilizado por otros proyectos?¿Es posible un proyecto de recursos reutilizables maven?

Motivación es la siguiente. Tengo una biblioteca que contiene solo código html/css/javascript. Esta biblioteca debe estar empaquetada como recursos en un proyecto de guerra. Por ahora, construyo un archivo web con recursos de un solo pom. ¿Pero puedo separar el código html/css/javascript en un artefacto nuevo y volver a utilizarlo en varios proyectos de guerra?

Respuesta

9

Uso Maven Overlays. Ver Manipulating WAR Overlays para más ejemplos.

+1

@Pascal Thivent usted parece estar conociendo su camino hacia maven docs, está bien escrito pero mal estructurado si me pregunta ..hay un enlace que contiene toda la documentación de la a la z, tal vez encuentre algunas cosas que pueda usar más adelante, tal vez incluso ahora, pero no sé si existe ... +1 – ant

+0

¡Esto es todo! Gracias. –

+0

@ c0mrade La documentación es algo de lo que la gente suele quejarse, así que supongo que tienes razón (la información está allí pero es difícil de encontrar, que es exactamente lo que estás diciendo). Afortunadamente, sé dónde buscar o qué buscar ahora. Pero hay algunos buenos libros que pueden ayudarlo, por ejemplo http://www.sonatype.com/book/ (disponible en línea) o http://www.packtpub.com/apache-maven-2-effective-implementations/ libro. Muy recomendable. –

1

Puede hacerlo con el Maven assembly plugin.

+0

¿Cómo puedo hacer esto exactamente? –

+0

@Volodymyr Por favor, consulte la guía del usuario que he vinculado, contiene ejemplos también. Si tiene una pregunta más concreta entonces, y cuéntenos más detalles sobre su proyecto, podemos darle respuestas más concretas :-) –

+0

Por lo que yo entiendo los ensambles de distribución, es algo definitivo y no reutilizable. ¿No es así? Si es así, no son aptos para hacer lo que necesito. Con maven-assembly-plugin puedo crear un ensamblaje de distribución para la biblioteca de recursos. En mi pom de guerra, incluso puedo usar este artefacto como dependencia. En tal caso, obtendré target \ war-artifact-1.0 \ WEB-INF \ lib \ resource-artifact-1.0.jar en lugar de contenido del ensamblado de distribución desempaquetado en target \ war-artifact-1.0 \ folder. En una guía provista, no encuentro ninguna forma de extraer el ensamblaje de distribución en la raíz del archivo web. –

0

No me imagino que maven le impediría criticar algunos recursos y agregar eso como una dependencia en su proyecto web.

Sin embargo, la forma en que necesita hacer referencia a los recursos sería un poco extraño. No estoy acostumbrado a cargar hojas de estilo css como recursos java dentro de un archivo jar dentro de WEB-INF/lib.

Me gustaría referirme a ellos como recursos web normales, relativos a la raíz del archivo WAR, no a través del cargador de clases.

+0

Sí, no necesito recursos para manipular. Necesito que existan en mi carpeta web y archivo web para remitirlos estáticamente, no a través del cargador de clases. –

0

Esto es una cosa muy simple para probar:

$ 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

Necesito tener dos proyectos, no uno. El primer proyecto debe contener recursos. El segundo proyecto debe incluir recursos desde el primer proyecto hasta la guerra. –

+0

Entonces una superposición WAR es lo que quiere –

+0

Sí, ahora puedo ver que las superposiciones son exactamente lo que necesito. –

0

Esto se puede hacer por discordante artefacto de recursos y desembalaje en src/main/resources en el proyecto de la guerra durante la fase de validate por ejemplo. pom recurso es trivial, pero pom guerra contendrá lo siguiente:

<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> 
Cuestiones relacionadas