Pregunta

Tengo un proyecto de guerra experta que produce webapp.war, y un proyecto Maven 'piel' que produce skin.zip (un archivo completo de recursos y archivos XML). Ahora quiero agregar este archivo zip como un contexto de servlet de recursos (por ejemplo WEB-INF / skin.zip).

He intentado utilizar superposiciones, pero expande el archivo zip en WEB-INF en lugar de colocar el archivo no expandido existe:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <overlays>
                <overlay>
                    <groupId>com.mycompany</groupId>
                    <artifactId>skin</artifactId>

                    <type>zip</type>
                    <targetPath>WEB-INF</targetPath>
                </overlay>
            </overlays>
        </configuration>
    </plugin>

¿Hay alguna manera de evitar que la ampliación del recurso - o de alguna manera pegar el archivo en allí (sin utilizar la hormiga-plugin).

Nota: type es un elemento de configuración totalmente innecesario e inútil - que no le dice al plugin de la forma de ampliar el artefacto, como era de esperar - se dice que la forma de Buscar ella. Por ejemplo, si cambia el tipo de cremallera en frasco, que se queja de que no puede encontrar el artefacto (de la manera más inútil es posible).

¿Fue útil?

Solución

He intentado utilizar superposiciones, pero expande el archivo zip en WEB-INF

Sí, eso es lo que hacen las superposiciones, el contenido es descomprimido se fusionará con la guerra. Eso no es sólo la herramienta adecuada en su caso.

¿Hay alguna manera de evitar que la ampliación del recurso - o de alguna manera pegar el archivo allí

Yo usaría el Maven Plugin de Dependencia y su dependency:copy objetivo:

  • dependency:copy toma una lista de artefactos definidos en la sección de configuración plugin y los copia en una ubicación especificada, cambiar el nombre de ellos o pelar la versión si se desea. Este objetivo puede resolver los artefactos de repositorios remotos si no existen en el local.

Y se unen en la fase prepare-package. A continuación, algunos puntos de partida:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-prepare-package</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>com.mycompany</groupId><!-- or ${project.groupId} -->
                  <artifactId>skin</artifactId>
                  <version>X.Y.Z</version><!-- or ${project.version} -->
                  <type>zip</type>
                </artifactItem>
              </artifactItems>
              <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

Copia específicos para más ejemplos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top