plugin - Maven: ¿cómo obtener un paquete de guerra con recursos copiados en WEB-INF?
maven war plugin warsourcedirectory (3)
cuando creo un paquete war con maven, los archivos y directorios bajo el directorio "src / main / resources" se copian en / WEB-INF / classes en lugar de / WEB-INF. ¿Cómo puedo hacer que se copien en / WEB-INF?
gracias rand
ACTUALIZACIÓN: en mi pom ahora uso esto:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>war</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>myapp/target/WEB-INF</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
y lanzo mvn con:
mvn -Dmaven.test.skip = recursos de paquetes limpios verdaderos: recursos de copia
pero obtuve: [INFO] Uno o más parámetros de complemento necesarios no son válidos / faltan para ''recursos: copiar recursos''
[0] Dentro de la definición de plugin ''maven-resources-plugin'' especifique lo siguiente:
... VALOR.
[1] Dentro de la definición de plugin ''maven-resources-plugin'' especifique lo siguiente:
... VALOR.
Estoy usando maven 2.2 y el fragmento de código es básicamente el mismo de la documentación, ¿alguna idea?
Esta configuración está funcionando agregar complemento pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<webResources>
<!--copy resource file location-->
<resource>
<directory>${project.build.directory}/classes</directory>
</resource>
</webResources>
<!--location for add file-->
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
</configuration>
</plugin>
Los recursos web no son lo mismo que los recursos de java, que se deben colocar en la ruta de clase. Los recursos web se procesan a través del plugin war y se deben colocar en src/main/webapp/WEB-INF/
. En este caso, funcionará automáticamente sin ninguna configuración adicional en el archivo pom.xml.
configure el parámetro outputDirectory
de los resources:resources
complemento de resources:resources
, o ponga sus archivos en el directorio src/main/webapp/WEB-INF/
. complemento de recursos
EDITAR:
Esta configuración está funcionando para mí:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<id>default-copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
puede ejecutar una fase en la forma somePhase
o una meta somePlugin:someGoal
. Las invocaciones de fase invocarán todos los objetivos de los complementos enganchados en las fases en el intervalo [validar, fase] en orden, por lo que no es necesario llamarlos explícitamente.