Question

J'ai un projet de guerre maven qui produit webapp.war, et une « peau » maven projet qui produit skin.zip (un fichier complet des ressources et des fichiers XML). Maintenant, je veux ajouter ce fichier zip en tant que ressource de contexte de servlet (par exemple WEB-INF / skin.zip).

J'ai essayé d'utiliser des superpositions, mais il élargit le fichier zip dans WEB-INF au lieu de placer le fichier il non élargi:

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

Est-il possible pour l'empêcher d'étendre la ressource - ou en quelque sorte coller le fichier là-dedans (sans utiliser le plug-in de fourmis).

Note: type est un élément de configuration totalement inutile et inutile - dire qu'il n'a pas le plug-in comment développer l'artefact, comme on pouvait s'y attendre - il raconte comment il FIND il. Par exemple, si vous changez le type de zip à pot, il se plaint qu'il ne peut pas trouver l'artefact (la manière la plus inutile possible).

Était-ce utile?

La solution

  

J'ai essayé d'utiliser des superpositions, mais il élargit le fichier zip dans WEB-INF

Oui, c'est ce que font les superpositions, le contenu est décompressé à fusionner avec la guerre. C'est tout simplement pas le bon outil dans votre cas.

  

Est-il possible pour l'empêcher d'étendre la ressource - ou en quelque sorte coller le fichier là-dedans

J'utiliser le plugin Maven Dependency et son dependency:copy but:

  
      
  • dependency:copy prend une liste d'objets définis dans la section de configuration du plug-in et les copies à un emplacement spécifié, les renommer ou stripping la version si on le souhaite. Cet objectif peut résoudre les artefacts de dépôts distants si elles n'existent pas local.
  •   

bind sur la phase prepare-package. Ci-dessous, un point de départ:

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

Voir Copie artefacts spécifiques pour d'autres exemples.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top