2016-10-14 5 views
0

С другом мы работаем над проектом для нашей школы, и мы в конце. Проблема в том, что с Eclipse наша java-программа работает правильно и с JAR, сгенерированным eclipse. Но нам нужно, когда вы выполняете команду mvn package, генерировать JAR. Этот JAR не находит классы внешнего JAR, это первый раз, когда мы используем Maven, поэтому можете ли вы помочь мне сделать хороший pom.xml, что, когда мы делаем mvn-пакет, он генерирует JAR с использованием внешнего JAR? Существует ПОМ:Проблема создания JAR с использованием внешнего JAR с MAVEN

<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>coo.project</groupId> 
 
    <artifactId>COO-DONJON</artifactId> 
 
    <version>1.0-SNAPSHOT</version> 
 
    <packaging>jar</packaging> 
 

 
    <name>COO-DONJON</name> 
 
    <url>http://maven.apache.org</url> 
 

 
    <properties> 
 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
 
    </properties> 
 
    
 
    <dependencies> 
 

 
    \t <dependency> 
 
    \t <groupId>junit</groupId> 
 
    \t <artifactId>junit</artifactId> 
 
    \t <version>4.12</version> 
 
\t </dependency> 
 
\t <dependency> 
 
    \t \t <groupId>javazoom</groupId> 
 
    \t <artifactId>jlayer</artifactId> 
 
    \t <version>1.0.1</version> 
 
\t </dependency> 
 
    </dependencies> 
 
    <build> 
 
\t <plugins> 
 
\t \t <plugin> 
 
\t \t \t \t <groupId>org.apache.maven.plugins</groupId> 
 
\t \t \t \t <artifactId>maven-dependency-plugin</artifactId> 
 
\t \t \t \t <executions> 
 
\t \t \t \t \t <execution> 
 
\t \t \t \t \t \t <id>copy-dependencies</id> 
 
\t \t \t \t \t \t <phase>prepare-package</phase> 
 
\t \t \t \t \t \t <goals> 
 
\t \t \t \t \t \t \t <goal>copy-dependencies</goal> 
 
\t \t \t \t \t \t </goals> 
 
\t \t \t \t \t \t <configuration> 
 
\t \t \t \t \t \t \t <outputDirectory>${project.build.directory}</outputDirectory> 
 
\t \t \t \t \t \t \t <overWriteReleases>true</overWriteReleases> 
 
\t \t \t \t \t \t \t <overWriteSnapshots>true</overWriteSnapshots> 
 
\t \t \t \t \t \t \t <overWriteIfNewer>true</overWriteIfNewer> 
 
\t \t \t \t \t \t </configuration> 
 
\t \t \t \t \t </execution> 
 
\t \t \t \t </executions> 
 
\t \t </plugin> 
 
\t \t <plugin> 
 
\t \t \t <groupId>org.apache.maven.plugins</groupId> 
 
\t \t \t <artifactId>maven-javadoc-plugin</artifactId> 
 
\t \t \t <version>2.10.4</version> 
 
\t \t </plugin> 
 
\t \t <plugin> 
 
\t \t \t <groupId>org.apache.maven.plugins</groupId> 
 
\t \t \t <artifactId>maven-jar-plugin</artifactId> 
 
\t \t \t <version>3.0.2</version> 
 
\t \t \t <configuration> 
 
\t \t \t \t <archive> 
 
\t \t \t \t \t <manifest> 
 
\t \t \t \t \t \t <addClasspath>true</addClasspath> 
 
\t \t \t \t \t \t <mainClass>coo.project.App</mainClass> 
 
\t \t \t \t \t </manifest> \t \t 
 
\t \t \t \t </archive> 
 
\t \t \t </configuration> 
 
\t \t </plugin> 
 
\t 
 
\t </plugins> 
 
</build> 
 
</project>

ответ

1

Вы должны будете использовать Maven Assembly Plugin.
Что вам нужно, это исполняемый фляга, которая должна содержать все ваши зависимости. Проверьте ниже пример кода.

<build> 
    <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> 
      <archive> 
      <manifest> 
       <mainClass>coo.project.App</mainClass> // your main class here. 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

Это будет производить две банки. Один из них будет обычным банком, а второй - толстой банкой с добавлением к его названию -jar-with-dependencies. Это банку, которую вы должны использовать сейчас. Эта толстая банка будет включать ваш код, а также все зависимости, которые нужны вашему коду.

Если вы сделаете это, я не думаю, что вам нужно будет настроить плагин maven-dependency, а также maven jar-plugin, как это сделано в вашем pom.xml. Вы можете игнорировать это.

+0

Он работает, ТХК U – BlaCkOmN

+0

Нет проблем :-). –

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