Maven Assembly Plugin - 安装创建的程序集

时间:2010-04-14 17:29:31

标签: maven-2 maven-assembly-plugin

我有一个只包含文件的项目。我想将这些文件打包成zip并将它们存储在maven存储库中。我有配置插件配置来构建zip文件,该部分工作正常,但我似乎无法弄清楚如何安装zip文件?

另外,如果我想在另一个工件中使用这个程序集,我该怎么做?我打算调用依赖:unpack,但我没有在存储库中有一个工件来解压。

如何在我的存储库中获取一个zip文件,以便我可以在另一个工件中重复使用它?

父母pom

<build>
        <plugins>
            <plugin>
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <filters>
                        <filter></filter>
                    </filters>
                    <descriptors>
                        <descriptor>../packaging.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
        </plugins>
    </build>

Child POM

<parent>
    <groupId>com. ... .virtualHost</groupId>
    <artifactId>pom</artifactId>
    <version>0.0.1</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<name>Virtual Host - ***</name>
<groupId>com. ... .virtualHost</groupId>
<artifactId>***</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>

我把名字过滤掉了。这个POM是否正确?我只想将特定虚拟主机的文件捆绑在一起。

谢谢,

沃尔特

3 个答案:

答案 0 :(得分:15)

  

我将程序集插件配置为构建zip文件,该部分工作正常,但我似乎无法弄清楚如何安装zip文件?

好吧,创建的程序集应自动附加到项目中,然后在installdeploy目标上传到存储库。你能展示你的pom吗?

更新:对于您当前的配置,我不认为程序集是作为构建的一部分创建的。您需要将single目标绑定到生命周期阶段,通常为package

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-5</version>
    <configuration>
      <descriptors>
        <descriptor>../packaging.xml</descriptor>
      </descriptors>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id> <!-- this is used for inheritance merges -->
        <phase>package</phase> <!-- append to the packaging phase. -->
        <goals>
          <goal>single</goal> <!-- goals == mojos -->
        </goals>
      </execution>
    </executions>
  </plugin>

现在它应该正确安装/部署。

  

另外,如果我想在另一个工件中使用这个程序集,我该怎么做?我打算调用依赖:unpack,但我没有在存储库中有一个工件来解压。

您可以声明对程序集的依赖关系(在您的情况下使用正确的classifiertype)但由于依赖关系是通过存储库解决的,因此您需要先解决第一步。然后,声明类似这样的东西(分类器是程序集的id):

<dependency>
  <groupId>com. ... .virtualHost</groupId>
  <artifactId>***</artifactId>
  <version>0.0.1</version>
  <classifier>...</classifier>
  <type>zip</type>
</dependency>

答案 1 :(得分:1)

我认为程序集应该自动附加到构建中,但如果这不起作用,Maven Build Helper "attach-artifact" goal会附加要在存储库中安装的指定文件。我已经使用这个插件来安装由Ant或NSIS等外部进程创建的文件。

答案 2 :(得分:0)

我不知道这对你有用,但是由于JAR文件基本上是一个ZIP文件加上META-INF信息,你可以将你的项目创建为没有源的jar,并在{中添加xip对象{1}}无需任何插件配置。

如果您希望自己的内容位于其他位置,则可以执行以下操作:

src/main/resources

如果您希望在存储库中安装和访问工件,则需要将其设置为部署阶段:

http://maven.apache.org/plugins/maven-deploy-plugin/usage.html