Отсутствует файл aar в многопроектной сборке maven2 - PullRequest
2 голосов
/ 16 сентября 2008

Я пытаюсь использовать maven2 для создания проекта axis2. Мой проект настроен как родительский проект с модулями AAR, WAR и EAR. Когда я запускаю цель пакета родительского проекта, консоль показывает успешную сборку, и все файлы создаются. Однако файл AAR, созданный проектом AAR, не включается в созданный проект WAR. Проект AAR указан как зависимость проекта WAR. Когда я явно запускаю цель пакета WAR, файл AAR включается в файл WAR.

Почему цель пакета родителя не включает в себя необходимую зависимость, в то время как цель пакета ребенка не содержит?

Я использую maven-war-plugin v2.1-alpha-2 в своем военном проекте.

POM родителей:

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

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

Спасибо, Джо

Ответы [ 2 ]

2 голосов
/ 23 сентября 2008

Мне удалось заставить мою сборку Maven работать правильно, добавив следующий плагин в файл 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>
0 голосов
/ 18 сентября 2008

Вы пытались использовать элемент "type" в своих зависимостях? Например:

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

Трудно сказать наверняка, в чем заключается ваша проблема, не видя реальных файлов pom.

Обновление:

Что произойдет, если из родительского проекта вы запустите:

 mvn clean install
  1. Имеет ли "установка" поведение, отличное от "пакета", в отношении вашей проблемы?
  2. Вы видите файл .aar в своем локальном репозитории maven (~ / .m2 / repository / com / mycompany /.../)?

Как примечание, я никогда не был очень доволен плагином Maven War. Я всегда заканчивал тем, что использовал плагин сборки maven. Кажется, он работает лучше и более последовательный. Также убедитесь, что вы используете последнюю версию Maven (2.0.9). Я потратил полдня на борьбу с подобной проблемой, которая была исправлена ​​в последней версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...