2016-09-20 3 views
-1

Я пытаюсь сделать одну банку со всеми зависимостями, разрешенными, чтобы я мог запустить эту банку из командной строки. Я использую в Maven assembly:single, но всякий раз, когда я делаю это, я получаю Устранена проблемаmaven assembly: single не разрешает зависимость

[ERROR] com.XXX.XXXX.XXX:XXX-XXX-XXX:jar:XXX 
[ERROR] 
[ERROR] from the specified remote repositories: 
[ERROR] A (http://XXXXX/, releases=true, snapshots=true), 
[ERROR] B (http://XXXX/, releases=true, snapshots=true), 
[ERROR] C (https://repo.maven.apache.org/maven2/, releases=true, snapshots=true 
), 
[ERROR] D (https://XXXXX, releases=false, snapshots=true) 
[ERROR] Path to dependency: 
[ERROR] 1) com.test.Report:myjar:jar:0.0.1-SNAPSHOT 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit 
ch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please rea 
d the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE 
xception 

Это ПОМ я работаю с Сейчас эти банки уже решены, и присутствуют в папке Maven зависимостей. Я могу запустить весь проект из Eclipse, но вам нужно предоставить эту банку клиенту со всеми включенными банками. Любая помощь приветствуется. Спасибо :)

+0

Вызов из команды таким образом, что нет разрешения зависимостей ... – khmarbaise

ответ

0

Хорошо. Вероятно, никто не будет смотреть на этот ответ, но все же я хотел бы получить записку для моего будущего. Эта проблема отличалась от того, что я получал. Для запуска любого plugin убедитесь, что <plugin> находится внутри <plugins> внутри <build> (не под <pluginManagement>). Выполнение этого запускало плагин и банку с зависимостями, сформированными на mvn install.

0

Один из подходов заключается в использовании конфигурации «jar-with-dependencies» в вашем pom.xml. Это упакует все ваши зависимости в банке.
Для например:

<build> 
    <plugins> 
     <!-- any other plugins --> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

Другой подход заключается в использовании maven shade plugin. Для например:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.4.3</version> 
     <configuration> 
      <!-- put your configurations here --> 
     </configuration> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

The Maven тени плагин будет в основном создавать две банки в конце. Первая банка - это нормальная банка, которая содержит только скомпилированные классы исходного кода.
Вторая баня также содержит ваши скомпилированные классы , но также будет содержать файлы классов из всех ваших зависимостей. Это банку, которую вы должны предоставить своему клиенту.

Смежные вопросы