Domanda

Sto cercando di utilizzare Maven2 per creare un progetto Axis2.Il mio progetto è configurato come progetto principale con moduli AAR, WAR e EAR.Quando eseguo l'obiettivo del pacchetto del progetto principale, la console mostra una compilazione riuscita e tutti i file vengono creati.Tuttavia il file AAR generato dal progetto AAR non è incluso nel progetto WAR generato.Il progetto AAR è elencato come una dipendenza del progetto WAR.Quando eseguo esplicitamente l'obiettivo del pacchetto WAR, il file AAR viene quindi incluso nel file WAR.

Perché l'obiettivo del pacchetto del genitore non dovrebbe includere la dipendenza necessaria mentre l'esecuzione dell'obiettivo del pacchetto del figlio lo fa?

Sto utilizzando il plug-in maven-war v2.1-alpha-2 nel mio progetto di guerra.

POM genitore:

<parent>
    <groupId>companyId</groupId>
    <artifactId>build</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.nationwide.nf</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<modules>
    <module>ws-war</module>
    <module>ws-aar</module>
    <module>ws-ear</module>
</modules>

AAR POM:

<parent>
    <artifactId>parent</artifactId>
    <groupId>companyId</groupId>
    <version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>companyId</groupId>
<artifactId>ws-aar</artifactId>
<version>1.0.0-SNAPSHOT</version>
<description/>
<packaging>aar</packaging>
<dependencies>...</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin> 

        <plugin>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
            <version>1.4</version>
            <configuration>...</configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>wsdl2code</goal>
                    </goals>
                    <id>axis2-gen-sources</id>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-aar-maven-plugin</artifactId>
            <version>1.4</version>
            <extensions>true</extensions>
            <configuration>...</configuration>
        </plugin>
    </plugins>
</build>

POM DI GUERRA:

<parent>
    <artifactId>parent</artifactId>
    <groupId>companyId</groupId>
    <version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>companyId</groupId>
<artifactId>ws-war</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<description/>
<dependencies>
    <dependency>
        <groupId>companyId</groupId>
        <artifactId>ws-aar</artifactId>
        <type>aar</type>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>
    .
    .
    .
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1-alpha-2</version>
            <configuration>
                <warName>appName</warName>
            </configuration>
        </plugin>
    </plugins>
</build>

Grazie, Joe

È stato utile?

Soluzione

Sono riuscito a far funzionare correttamente la mia build Maven aggiungendo il seguente plugin al file ws-war pom:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.directory}/${project.build.finalName}/WEB-INF/services
                        </outputDirectory>
                        <includeArtifactIds>
                            ws-aar
                        </includeArtifactIds>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Altri suggerimenti

Hai provato a utilizzare l'elemento "type" nelle tue dipendenze?Per esempio:

<dependency>
  <groupId>group-a</groupId>
  <artifactId>artifact-b</artifactId>
  <version>1.0</version>
  <type>aar</type>
</dependency>

È difficile dire con certezza quale sia il tuo problema senza vedere i tuoi file pom reali.

Aggiornamento:

Cosa succede se, dal progetto principale, esegui:

 mvn clean install
  1. "Installa" ha un comportamento diverso da "pacchetto" per quanto riguarda il tuo problema?
  2. Vedi il file .aar nel tuo repository Maven locale (~/.m2/repository/com/mycompany/.../)?

Come nota a margine, non sono mai stato molto soddisfatto del plugin Maven War.Ho sempre finito per utilizzare il plug-in di assemblaggio Maven.Sembra semplicemente funzionare meglio ed è più coerente.Inoltre, assicurati di utilizzare l'ultima versione di Maven (2.0.9).Ho passato mezza giornata a combattere un problema simile che è stato risolto nell'ultima versione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top