2015-09-01 3 views
1

Требование: сгенерировать один файл jar с зависимостями и присвоить имя резца файлу jar.Невозможно сгенерировать один файл jar с зависимостями в maven

Моя проблема в том, что мне нужно создать только один файл jar с зависимостями, мне не нужен файл jar по умолчанию. Когда я «МВН чистой установки» я получаю результат с двумя баночке файлами имен: FPMWebDocumentation-0.0.1.jar, FPMWebDocu.jar

Я не хочу, чтобы FPMWebDocumentation-0.0.1. jar файл, который будет создан, мне нужно только FPMWebDocu.jar будет сгенерировано. Если я удалю версию groupId, artifactId за пределами узла сборки, это приведет к ошибке «groupId», отсутствующей «artifactId» и т. Д. Теперь, если я удаляю версию groupId & из текущего местоположения и помещаю внутри узла плагина, он по-прежнему дает такую ​​же пропущенную ошибку, как указано выше.

Ниже мой pom.xml:

<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.fraunhofer.latexDocumentation</groupId> 
<artifactId>FPMWebDocumentation</artifactId> 
<version>0.0.1</version> 
<packaging>jar</packaging> 

<name>FPMWebDocumentation</name> 
<url>http://maven.apache.org</url> 

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

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>jar-with-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <configuration> 
         <archive> 
          <manifest> 
           <mainClass>com.fraunhofer.latexDocumentation.MainClass</mainClass> 
          </manifest> 
         </archive> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <finalName>FPMWebDocu</finalName> 
         <appendAssemblyId>false</appendAssemblyId> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jsoup</groupId> 
     <artifactId>jsoup</artifactId> 
     <version>1.8.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>18.0</version> 
    </dependency> 
</dependencies> 
</project> 

ответ

0

Если нет особой заботы, просто оставить FPMWebDocumentation-0.0.1.jar там. Этот файл на самом деле является главным артефактом самого проекта. Ваш FPMWebDocu.jar на самом деле генерируется «лишний» JAR.

Пожалуйста, дайте нам знать, что ваше беспокойство иметь главный артефакт там, который может быть в состоянии решить с помощью другого решения


Если я правильно помню, поведение maven-shade-plugin по умолчанию используется заштрихованная JAR как главный артефакт проекта. Посмотрите here, чтобы увидеть, как сделать убер JAR с помощью тени плагин

(Тем не менее, это, как правило, плохая идея, чтобы сделать убер-банку как главный артефакт, как он собирается разрушить механизм управления зависимостями, если вы используете uber-jar как зависимость)

+0

Adrian Shum Я не мог ответить на вопрос, я отредактировал его, теперь это должно быть более понятно, спасибо. –

+0

Вы не изменяете: 'FPMWebDocumentation-0.0.1.jar' - это не только созданный« по умолчанию », но и главный артефакт проекта. «FPMWebDocu.jar» - это просто дополнительный JAR, созданный плагином сборки. В чем проблема, связанная с тем, что у вас есть главный артефакт? Расскажите нам о своей реальной проблеме и давайте предложим решение для вас. –

+0

Есть уродливые хаки, такие как http://stackoverflow.com/questions/2188746/what-is-the-best-way-to-avoid-maven-jar, но я не знаю, я вижу, что стоит сделать такой незаметный POM, как это без серьезных причин. –

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