2009-09-07 18 views
5

¿Cuál es la mejor manera de poner código javascript/html/css en el repositorio maven, para que sea fácilmente utilizable por los proyectos java.mejor práctica: cómo alojar el código del lado del servidor en el repositorio maven

¿Hay alguna manera de hacerlo para que el proyecto incluido pueda ser fácilmente "visible en la web" por el proyecto incluido?

Supongamos, por ejemplo, que escribo un archivo tricks.js muy útil y lo pongo en el repositorio de mvn.

¿Es posible crear un proyecto web que añade tricks.js como una dependencia y luego haciendo

<script src="/some/thing/tricks.js"/> 

hace que el archivo tricks.js para ser servido?

Respuesta

6

Los recursos externos se deben empaquetar en un artefacto y publicar en el repositorio (para simplificar, utilice un artefacto de jar, pero puede especificar un assembly para empaquetar un zip en lugar de dejar claro para qué es el artefacto). El maven-dependency-plugin descomprime los contenidos del contenedor en una ubicación específica en el proyecto de guerra. Esa carpeta se especifica entonces como un directorio external web resources para maven-war-plugin.

La siguiente configuración descomprimirá los contenidos de my-resources en el directorio target/external-resources, luego incluirá los contenidos de esa carpeta en la guerra como si se hubieran definido en src/main/resources.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>unpack</id> 
     <phase>generate-resources</phase> 
     <goals> 
     <goal>unpack</goal> 
     </goals> 
     <configuration> 
     <artifactItems> 
      <artifactItem> 
      <groupId>name.seller.rich</groupId> 
      <artifactId>my-resources</artifactId> 
      <version>1.0.0</version> 
      <type>jar</type> 
      <overWrite>false</overWrite> 
      </artifactItem> 
     </artifactItems> 
     <outputDirectory>${project.build.directory}/external-resources</outputDirectory> 
     <overWriteReleases>false</overWriteReleases> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.0</version> 
    <configuration> 
    <webResources> 
     <resource> 
     <directory>${project.build.directory}/external-resources</directory> 
     </resource> 
    </webResources> 
    </configuration> 
</plugin> 
2

Puede empacarlo en un frasco y luego descomprimirlo con los plugins de maven.

+0

Sí, esa es la mejor práctica. – SingleShot

+0

Uso esta práctica con GWT. – merin

+0

Aunque nunca tuve que hacer esto por mí mismo, este parece ser el mejor enfoque con la arquitectura y los estándares de Maven. – aperkins

Cuestiones relacionadas