Maven JAR-с-зависимостями, включая 2 каждого из моих классов - PullRequest
2 голосов
/ 11 апреля 2011

Я использую maven для создания автономного исполняемого jar-файла с помощью утилиты, которую я написал, чтобы взять кусок файла журнала между заданными отметками даты / времени и скопировать эту часть журнала в файл меньшего размера. , Когда я делаю

mvn install

maven создает 2 файла jar, LogCopy-0.0.1-SNAPSHOT.jar и LogCopy-0.0.1-SNAPSHOT-jar-with-dependencies.jar. Странно, что он создает два архива, но еще более странно и вызывает у меня беспокойство то, что в большем .jar, кажется, есть 2 из каждого класса, который я написал.

Мой POM.xml использует плагин maven-assembly таким образом:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <id>create-my-bundle</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.mycompany.myproject.subproject.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

Я что-то здесь не так делаю? Я в растерянности - похоже, у Google не так много на этом, и я не могу найти что-то много об этом в «Maven: The Definition Guide» О'Рейли. Почему он помещает 2 каждого класса в .jar, и почему он делает .jar без зависимостей так же, как и с?

Ответы [ 4 ]

1 голос
/ 11 апреля 2011

Звучит как эта ошибка: http://jira.codehaus.org/browse/MASSEMBLY-399

Я не уверен, какую версию Maven вы используете, но один из комментариев указывает, что вы можете использовать следующий XML ...

<archiverConfig><duplicateBehavior>skip</duplicateBehavior></archiverConfig>

Если вы просматриваете этот JIRA, вы можете увидеть немало ошибок, связанных с этой проблемой.

1 голос
/ 31 января 2013

Только что скачал 2.2-бета-5 из плагина сборки maven. В этой версии исправлена ​​проблема дубликатов .class в файле jar.Хотя мне все еще интересно, как одно и то же имя файла может быть упаковано в одно и то же место в банке.

1 голос
/ 11 апреля 2011

Два файла jar генерируются, потому что LogCopy-0.0.1-SNAPSHOT.jar создается "нормальной" сборкой maven. Вы только что добавили плагин, который дополнительно (в качестве побочной задачи) создает архив LogCopy-0.0.1-SNAPSHOT-jar-with-dependencies.jar. Плагин maven-assembly-plugin не отключает «нормальную» сборку, он просто выполняет дополнительную задачу на этапе пакета.

0 голосов
/ 06 октября 2013

В версии 2.2 все выглядит нормально, поэтому временно вы можете добавить:

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