2009-06-23 91 views
6

我的程序集描述符直接在pom文件中包含依赖关系时正确应用includes和exclude。maven程序集忽略父项依赖关系

但是,当我将依赖关系放在父pom文件中时,assembly:directory goal报告包含和排除未被触发。

你知道为什么maven-assembly-plugin忽略父类的依赖吗?我该如何解决它?

下面是行家和组装描述:

装配描述:

<assembly> 
    <id>distribution</id> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <fileSets> 
    <fileSet> 
     <includes> 
     <include>readme.txt</include> 
     </includes> 
    </fileSet> 
    <fileSet> 
     <directory>target</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
     <include>*.jar</include> 
     </includes> 
    </fileSet> 
    </fileSets> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
     <unpack>false</unpack> 
     <scope>runtime</scope> 
     <excludes> 
     <exclude>org.tanukisoftware:wrapper:exe:3.3.5</exclude> 
     </excludes> 
    </dependencySet> 
    <dependencySet> 
     <outputDirectory>/bin</outputDirectory> 
     <unpack>false</unpack> 
     <scope>runtime</scope> 
     <includes> 
     <include>org.tanukisoftware:wrapper:exe:3.3.5</include> 
     </includes> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

儿童POM组装插件定义:

<plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <ignoreDirFormatExtensions>true</ignoreDirFormatExtensions> 
      <descriptors> 
       <descriptor>assembly.xml</descriptor> 
      </descriptors> 
     </configuration> 
     <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase>  
       <goals> 
        <goal>directory</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

父POM的依赖关系:

<dependencies> 
    <dependency> 
     <groupId>org.tanukisoftware</groupId> 
     <artifactId>wrapper</artifactId> 
     <version>3.3.5</version> 
     <type>dll</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.tanukisoftware</groupId> 
     <artifactId>wrapper</artifactId> 
     <version>3.3.5</version> 
     <type>exe</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.tanukisoftware</groupId> 
     <artifactId>wrapper</artifactId> 
     <version>3.3.5</version> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 

警告在构建报告:

[assembly:directory {execution: make-assembly}] 
Reading assembly descriptor: assembly.xml 
Processing DependencySet (output=/lib) 
[WARNING] The following patterns were never triggered in this artifact exclusion filter: 
o 'org.tanukisoftware:wrapper:exe:3.3.5' 

Processing DependencySet (output=/bin) 
[WARNING] The following patterns were never triggered in this artifact inclusion filter: 
o 'org.tanukisoftware:wrapper:exe:3.3.5' 

回答

6

我不知道这是否会帮助,但我一直做的是在父母的POM放入dependencyManagement块的依赖关系;

<dependencyManagement> 
    <!-- dependencies with exclusions --> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 

      <version>${version.springframework}</version> 

      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

然后,在孩子聚甲醛,再列出的依赖关系,但没有版本和排除

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
    </dependency> 

但说实话,我的第一个也是唯一装配,我无法得到它在一个孩子模块中工作,并将其放入父母的POM中。这是我的汇编文件,制作ZIP文件进行独立的Java程序,由cron运行:

<?xml version="1.0" encoding="UTF-8"?> 

<assembly> 
    <id>${project.layer}-both</id> 

    <formats> 
     <format>zip</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <baseDirectory>/</baseDirectory> 

    <moduleSets> 
     <moduleSet> 
      <includes> 
       <include>edu.berkeley.ist.cars:cars_upload</include> 
      </includes> 

      <binaries> 
       <unpack>false</unpack> 
       <useStrictFiltering>true</useStrictFiltering> 
       <includeDependencies>true</includeDependencies> 
       <outputDirectory>upload</outputDirectory> 
      </binaries> 
     </moduleSet> 

     <moduleSet> 
      <includes> 
       <include>edu.berkeley.ist.cars:cars_download</include> 
      </includes> 

      <binaries> 
       <unpack>false</unpack> 
       <useStrictFiltering>true</useStrictFiltering> 
       <includeDependencies>true</includeDependencies> 
       <outputDirectory>download</outputDirectory> 
      </binaries> 
     </moduleSet> 
    </moduleSets> 

    <!-- 
     crontab.txt is put in twice, in both upload and download, just in case. 
     --> 
    <files> 
     <!-- upload files --> 
     <file> 
      <source>src/stuff/scripts/cars_upload.sh</source> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>upload</outputDirectory> 
     </file> 

     <file> 
      <source>src/stuff/notes/crontab-${project.layer}.txt</source> 
      <destName>crontab.txt</destName> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>upload</outputDirectory> 
     </file> 

     <!-- download files --> 
     <file> 
      <source>src/stuff/scripts/cars_download.sh</source> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>download</outputDirectory> 
     </file> 

     <file> 
      <source>src/stuff/notes/crontab-${project.layer}.txt</source> 
      <destName>crontab.txt</destName> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>download</outputDirectory> 
     </file> 
    </files> 
</assembly> 

有两个顶层目录中的zip文件,上传和下载。