Maven - 模块和模块设置VS依赖和依赖集

时间:2011-12-19 15:21:55

标签: maven-2 pom.xml

我们有与maven一起使用的安装文件夹包装发布,
此Installation文件夹包含一些静态文件和一个pom.xml
构建目标是将静态文件复制到目标安装文件夹以及存储库中的一些zip文件 - 展开它们并将它们放在/解压缩下的目标文件夹中。

安装文件夹:

/installation_folder
pom.xml
    /some_files
             /file1
             /file2

目标文件夹应该是:

/target
    /installation_files
        /some_files
             /file1
             /file2
        /unzipped
             /prj1   - unzipped artifact prj1 from the repository
             /prj2   - unzipped artifact prj2 from the repository

在这个“安装pom”上 - 我有一个对程序集xml的引用;我能够复制静态文件 - 并从存储库中获取artifacs,
问题是 - 从存储库中复制zip并将其展开到目标/解压缩文件夹中
我应该使用Modules和moduleSet或dependency和dependencySets吗?
如果pom.xml + assembly.xml看起来像:          project.group     installation_project     POM

<modules>
    <module>prj1</module>        
    <module>prj2</module>       
</modules>

...     

和assembly.xml:

<moduleSets>
    <moduleSet>
        <includes>
            <include>*:*</include>
        </includes>
            <binaries>
            <unpack>true</unpack>
            </binaries>
        </binaries>
    </moduleSet> 


或者看起来应该是这样的:

<project>
<groupId>project.group</groupId>
<artifactId>installation_project</artifactId>
<packaging>pom</packaging>

    <dependencies>

        <dependency>
            <artifactId>prj1</artifactId>
            <groupId>gruop_id</groupId>
            <version>1.0-SNAPSHOT</version>
            <type>zip</type>
        </dependency>
        <dependency>
            <artifactId>prj2</artifactId>
            <groupId>gruop_id</groupId>
            <version>2.0</version>
            <type>zip</type>
        </dependency>
    </dependencies>

...     

和assembly.xml:

<dependencySets>
    <dependencySet>
        <outputDirectory>installation_files/unzipped/</outputDirectory>
        <outputFileNameMapping>${artifact.artifactId}</outputFileNameMapping>
        <includes>
            <include>*:*:zip</include>
        </includes>
        <unpack>true</unpack>
    </dependencySet>
</dependencySets>

谢谢!

1 个答案:

答案 0 :(得分:1)

另一种方法是使用maven依赖插件,使用goal = unpack。

<plugin>
   <artifactId>maven-dependency-plugin</artifactId>
   <executions>
     <execution>
       <id>unpack</id>
       <phase>generate-resources</phase>
       <goals>
          <goal>unpack</goal>
       </goals>
       <configuration>
         <artifactItems>
           <artifactItem>
              <groupId></groupId>
              <artifactId></artifactId>
              <version></version>
              <type></type>
              <overWrite></overWrite>
              <outputDirectory></outputDirectory>
           </artifactItem>
         </artifactItems>
       </configuration>
     </execution>
   </executions>
</plugin>

另一种方法是使用一个程序集插件,但我发现这非常麻烦,通常意味着比简单的解压缩/压缩更复杂的程序集创建。