2013-06-10 3 views
3

Мой проект имеет один родительский модуль, который имеет 3 дочерних модуля. Я пытаюсь создать толстую банку, используя плагин сборки maven. Тем не менее, я хочу создать толстую банку, а затем применить файл assembly.xml для дальнейшего связывания моего проекта.Как добавить все зависимости в одном банке в maven, а затем применить плагин сборки?

module1 pom.xml

<dependencies> 
    <dependency> 
     <groupId>common</groupId> 
     <artifactId>commonutils</artifactId> 
     <version>1.0</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-simple</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <descriptor>src/main/assembly/oozie.xml</descriptor> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

мой файл сборки

<assembly> 
<id>bundle</id> 
<formats> 
    <format>tar.gz</format> 
</formats> 
<includeBaseDirectory>true</includeBaseDirectory> 
<baseDirectory>search</baseDirectory> 

<fileSets> 
    <fileSet> 
     <directory>${project.basedir}/src/main/workflow</directory> 
     <outputDirectory>/</outputDirectory> 
     <excludes> 
      <exclude>*/**.properties</exclude> 
     </excludes> 
    </fileSet> 
    <fileSet> 
     <directory>${project.build.directory}</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>*.jar</include> 
     </includes> 
    </fileSet> 
</fileSets> 

<files> 
    <file> 
     <source>${project.basedir}/src/main/workflow/job.properties</source> 
     <outputDirectory>/</outputDirectory> 
     <filtered>true</filtered> 
    </file> 
</files> 

<moduleSets> 
    <moduleSet> 
     <useAllReactorProjects>true</useAllReactorProjects> 
     <binaries> 
      <outputDirectory>/</outputDirectory> 
      <unpack>false</unpack> 
      <dependencySets> 
       <dependencySet> 
        <outputDirectory>lib</outputDirectory> 
        <unpack>false</unpack> 
        <scope>runtime</scope> 
       </dependencySet> 
      </dependencySets> 
     </binaries> 
    </moduleSet> 
</moduleSets> 

После запуска

mvn package 

Окончательная баночку содержит только код модуля, а не все его зависимости ? Что здесь не так?

ответ

2

Используйте предварительно определенный дескриптор сборки jar-with-dependencies, который точно выполняет эту задачу.

+0

Будьте осторожны с ошибками в монтажном плагине, особенно при использовании Spring. Я использовал плагин Shade с гораздо лучшими результатами. – esmiralha

+0

Какие ошибки maven-assembly-plugin? Где отношения с весной? Помимо этого, в связи с тем, что время вопроса было опубликовано много нового релиза maven-assembly-plugin. – khmarbaise

+1

Описанный здесь и испытанный мной на прошлой неделе: http://mgorski.net/2013/dev/executable-jar-with-spring-based-application-inside-usin-maven – esmiralha

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