2015-02-25 1 views
0

У меня есть проект A, который имеет некоторые зависимости в POM. A имеет родительский проект B и проект с большим родителем C.Как скопировать все зависимости maven при упаковке с использованием файла сборки?

При упаковке A, используя файл сборки, я хотел бы поместить все необходимые зависимости для A внутри каталога в упакованном проекте.

В настоящее время я могу только упаковать зависимости, которые находятся в POM A. Я не нашел способ установить зависимости B и C, которые необходимы A. Вы знаете, как я мог это сделать?

Вот сборка XML:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin /assembly/1.1.2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 
    <id>bundle</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
     <dependencySet> 
      <!--Include runtime dependencies--> 
      <outputDirectory>${ser.depdir}</outputDirectory> 
      <scope>runtime</scope> 
     </dependencySet> 
    </dependencySets> 

    <fileSets> 
     <fileSet> 
      <!--Get the generated application jar--> 
      <directory>${project.build.directory}</directory> 
      <outputDirectory></outputDirectory> 
      <includes> 
       <include>*.jar</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <!--Get application resources--> 
      <directory>src/main/resources</directory> 
      <outputDirectory>conf</outputDirectory> 
      <includes> 
       <include>*.properties</include> 
       <include>*.sh</include> 
       <include>log4j2.xml</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <!--Get misc user files--> 
      <directory>${project.basedir}</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>README*</include> 
       <include>LICENSE*</include> 
       <include>NOTICE*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

И POM A в:

<?xml version="1.0" encoding="UTF-8"?> 
<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> 
    <parent> 
     <groupId>group</groupId> 
     <artifactId>ser</artifactId> 
     <version>1.0.6-SNAPSHOT</version> 
    </parent> 
    <artifactId>ser-art</artifactId> 
    <name>SER ART</name> 
    <description>desc</description> 
    <properties> 
     <ser.depdir>${project.artifactId}-dependencies</ser.depdir> 
    </properties> 
    <build> 
     <testResources> 
      <testResource> 
       <directory>src/test/resources</directory> 
      </testResource> 
      <testResource> 
       <directory>../config/test</directory> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>mainClass</mainClass> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>${ser.depdir}/</classpathPrefix> 
         </manifest> 
         <manifestEntries> 
          <Class-Path>./conf/</Class-Path> 
         </manifestEntries> 
        </archive> 
        <excludes> 
         <exclude>*.properties</exclude> 
         <exclude>*.sh</exclude> 
         <exclude>log4j2.xml</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <appendAssemblyId>false</appendAssemblyId> 
        <descriptors> 
         <descriptor>${basedir}/src/main/assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.8</version> 
       <executions> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>package</phase> 
         <goals> 
          <goal>copy-dependencies</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${project.build.directory}/${ser.depdir}</outputDirectory> 
          <includeScope>runtime</includeScope> 
          <overWriteReleases>false</overWriteReleases> 
          <overWriteSnapshots>false</overWriteSnapshots> 
          <overWriteIfNewer>true</overWriteIfNewer> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>group</groupId> 
      <artifactId>ser-commons</artifactId> 
      <version>1.0.6-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>group</groupId> 
      <artifactId>utilities-lib</artifactId> 
      <version>1.0.6-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.2.2</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 
+0

Создать отдельный модуль с упаковочным П, добавьте всю зависимость, нужно и создать дескриптор сборки с зависимостью, установленной и что должно работать без необходимости копировать файл в каталог и т.д. – khmarbaise

+0

The Maven-зависимость-плагин делает именно что я ожидаю от этого. Это файл assembly.xml, который, кажется, что-то пропускает ... –

ответ

0
  1. Обходной от верхней части головы может быть, что вы используете "плагин зависимостей Maven" фазы копирования для скопируйте все в определенный каталог, а затем используйте дескриптор сборки «набор файлов» для сборки. Но это заставит вашего pom выглядеть грязным.

  2. Я не пробовал, но монтажный плагин поддерживает упаковку транзитивной зависимости. Это правильное решение в вашем случае.

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