Maven - добавить JAR-с-зависимостями в качестве зависимости

Question..I»

Я хотел бы добавить зависимость от банку Mavenупакованный с этим 'Зависимости.

Подробности..

У меня есть многомодульный проект Maven, в котором один из модулей зависит от собственных библиотек и тому подобного. Как часть этогосборка, она упаковывает егоS зависимости вjar-with-dependencies как показано здесь:


    maven-assembly-plugin
    2.4
    
        
            jar-with-dependencies
        
        
            
                ${mainClass}
            
        
    
    
        
            make-assembly
            package
            
                single
            
        
    

Все хорошо, я получаю две банки при сборке:

seaniscool-0.0.1-SNAPSHOT.jar
seaniscool-0.0.1-SNAPSHOT-jar-with-dependencies.jar

Однако я'Я хотел бы использовать этот артефакт в другом модуле того же проекта. Если я просто добавлю модуль в качестве зависимости, я получу jar без встроенных библиотек.

Я мог бы продублировать конфигурацию сборки, чтобы включить собственные библиотеки во 2-й модуль, он 'не очень обширный, но предпочел бы не.

Любые идеи, как я могу добавитьjar-with-dependencies как зависимость и, следовательно, зависит от включенных библиотек?

Некоторые мысли ..

Я знаю, что могу создать отдельный jar с тестовыми классами, на которые может ссылаться Maven:

В 1-м модуле:


    org.apache.maven.plugins
    maven-jar-plugin
    2.2
    
        
            
                test-jar
            
        
    

Во 2-м модуле:


    my.group.id
    my.artifact.id
    my.version
    test-jar
    test

Возможно ли перенести эту концепцию здесь?

 Dave Newton26 мая 2013 г., 19:58
Почему вы специально хотите использовать jar с зависимостями, а не только с зависимостями, что Maven делает для вас - обрабатывает переходные зависимости?
 Sean Connolly26 мая 2013 г., 20:44
Это'не баночкаЯ зависимости Javaм после этогоs файлы dll и что у вас есть в комплекте с ним.

Ответы на вопрос(2)

Решение Вопроса

классификатор maven, Классификаторы используются для того, чтобы модуль maven мог создавать несколько артефактов из одного источника. Примерами являются версия jdk1.6 или 1.7 или даже исходный код и javadoc jars, которые может собрать maven.

Так что попробуйте это:

<dependency>
  <groupid>yourID</groupid>
  <artifactid>seaniscool</artifactid>
  <version>0.0.1-SNAPSHOT</version>
  <classifier>jar-with-dependencies</classifier>
</dependency>

Если вы хотите переименовать ваш classfier в более подходящее имя, например withNative или complete, или что-нибудь еще, посмотрите наплагин Maven Shade который также может создавать jar-файлы с зависимостями, но дает больше контроля.

 Khanh Tran23 нояб. 2016 г., 21:35
Здорово. Спасибо за вашу помощь!
 Sean Connolly26 мая 2013 г., 20:43
Это помогает, спасибо @mszalbach.
 Buminda29 апр. 2017 г., 04:50
Спасибо .. это сработало

@msczalbach»ответ

На самом деле, даже с standarad maven-jar-plugin вы можете присвоить любой сгенерированный jar суффикс. Просто используйте конфигурацию.

Например:

<plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-jar-plugin</artifactid>
</plugin>
<plugin>
    <artifactid>maven-assembly-plugin</artifactid>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <descriptorrefs>
            <descriptorref>self-contained</descriptorref>
        </descriptorrefs>
    </configuration>
</plugin>

Ваш ответ на вопрос