сборка maven с war и jar, выталкивающая нечетные артефакты во внутреннее хранилище

У меня есть проект maven, в котором я создаю файл war, но я также использую maven-jar-plugin для создания jar-файла в том же проекте.

- ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ - Я знаю, что это «неправильный» способ сделать это, но есть некоторые другие проблемы, возникающие при разделении этого на проект jar и отдельный военный проект с какой-либо третьей стороной плагины.

Я наблюдаю странное поведение с этим. Ниже представлена ​​структура моего проекта.

warproject
-src
--main
---webapp
----WEB-INF
-----web.xml
---java
----com.test.myclass
-----test.java
-pom.xml

Когда я создаю этот проект, я получаю правильный файл war и jar в моем целевом каталоге, однако в моем локальном репозитории .m2 происходит что-то странное. Установленный файл war имеет правильное имя war-jar-0.0.1-SNAPSHOT.war, однако содержимое этого файла является содержимым моего файла jar. Это также происходит, если я делаю обратное. то есть, если я настраиваю свой проект на создание jar-файла и использую maven-war-plugin для создания войны, архивы в моем целевом каталоге верны, но в моем локальном репо есть файл jar с содержимым моего файла войны. Ниже представлен файл pom, который я использую.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>war-jar</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <jarName>${project.artifactId}-${project.version}-client</jarName>
                </configuration>
                <executions>
                    <execution>
                        <id>make-a-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

</project>

Консольный вывод для этого следующий: он показывает, что jar загружается как war.

Installing /home/me/work/src/war-jar/target/war-jar-0.0.1-SNAPSHOT.jar to /home/me/.m2/repository/com/test/war-jar/0.0.1-SNAPSHOT/war-jar-0.0.1-SNAPSHOT.war

- ОБНОВЛЕНИЕ У меня все заработало, но мне пришлось изменить фазу выполнения "make-a-jar" для установки из пакета. Это работает нормально, и загружаются правильные артефакты, но я все еще не понимаю, почему это имеет значение. Очевидно, что артефакт создается на другом этапе жизненного цикла и, следовательно, отсутствует во время первоначальной установки проекта, поэтому не загружается неправильный файл. Это похоже на «взлом», и я хотел бы понять, почему это так.

7
задан broschb 25 September 2011 в 14:33
поделиться