web-dev-qa-db-fra.com

Maven: comment obtenir un package war avec des ressources copiées dans WEB-INF?

lorsque je crée un package war avec maven, les fichiers et les répertoires du répertoire "src/main/resources" sont copiés dans/WEB-INF/classes au lieu de/WEB-INF. Comment puis-je les copier dans/WEB-INF?

merci, Rand

UPDATE: Dans mon pom maintenant, j'utilise ceci:

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

et je lance mvn avec:

mvn -Dmaven.test.skip = true ressources de package clair: copy-resources

mais j'ai eu:

[INFO] One or more required plugin parameters are invalid/missing for 'resources:copy-resources'

[0] Inside the definition for plugin 'maven-resources-plugin' specify the following:

<configuration>
  ...
  <outputDirectory>VALUE</outputDirectory>
</configuration>.

[1] Inside the definition for plugin 'maven-resources-plugin' specify the following:

<configuration>
  ...
  <resources>VALUE</resources>
</configuration>.

J'utilise maven 2.2 et l'extrait est fondamentalement le même que celui de la documentation.

21
Randomize

configurez le paramètre outputDirectory du plugin resources:resources ou placez vos fichiers dans le répertoire src/main/webapp/WEB-INF/ . plugin de ressources

MODIFIER:

Cette configuration fonctionne pour moi:

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

vous pouvez exécuter une phase sous la forme somePhase ou un objectif somePlugin:someGoal. Les invocations de phase invoqueront dans l'ordre tous les objectifs de plug-ins accrochés aux phases dans l'intervalle [validate, phase]. Il n'est donc pas nécessaire de les appeler explicitement. 

27
coubeatczech

Les ressources Web ne sont pas les mêmes que les ressources Java, qui doivent être placées dans le chemin d'accès aux classes. Les ressources Web sont traitées via le plugin war et doivent être placées dans src\main\webapp\WEB-INF\. Dans ce cas, cela fonctionnera automatiquement sans configuration supplémentaire dans le fichier pom.xml.

25
kan

Cette configuration fonctionne, ajoutez le plugin 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>
0
Mahendra Sri