【问题标题】:How to publish multiple jar files to maven on a clean install如何在全新安装时将多个 jar 文件发布到 Maven
【发布时间】:2011-02-16 21:28:50
【问题描述】:

我有一个使用 maven 程序集插件从一个 jar 创建多个 jar 现在问题是我必须将这些 jar 发布到本地 repo,就像其他 maven jar 在构建时由他们自己发布 maven clean install我将如何做到这一点

这是我的 pom 文件

<project>
 <parent>
  <groupId>parent.common.bundles</groupId>
  <version>1.0</version>
  <artifactId>child-bundle</artifactId>
 </parent>
 <modelVersion>4.0.0</modelVersion>
 <groupId>common.dataobject</groupId>
 <artifactId>common-dataobject</artifactId>
 <packaging>jar</packaging>
 <name>common-dataobject</name>
 <version>1.0</version>
 <dependencies>
      </dependencies>
 <build>
  <plugins>
   <plugin>
    <groupId>org.jibx</groupId>
    <artifactId>maven-jibx-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
     <directory>src/main/resources/jibx_mapping</directory>
     <includes>
      <includes>binding.xml</includes>
     </includes>
     <verbose>false</verbose>
    </configuration>
    <executions>
     <execution>
      <goals>
       <goal>bind</goal>
      </goals>
     </execution>
    </executions>
   </plugin>
   <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
     <execution>
      <id>make-business-assembly</id>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>
      <configuration>
       <appendAssemblyId>false</appendAssemblyId>
       <finalName>flight-dto</finalName>
       <descriptors>
        <descriptor>src/main/assembly/car-assembly.xml</descriptor>
       </descriptors>
       <attach>true</attach>
      </configuration>
     </execution>
     <execution>
      <id>make-gui-assembly</id>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>
      <configuration>
       <appendAssemblyId>false</appendAssemblyId>
       <finalName>app_gui</finalName>
       <descriptors>
        <descriptor>src/main/assembly/bike-assembly.xml</descriptor>
       </descriptors>
       <attach>true</attach>
      </configuration>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

  </project>

这是我的汇编文件

<assembly>
  <id>app_business</id>
  <formats>
    <format>jar</format>
  </formats>
  <baseDirectory>target</baseDirectory>
  <includeBaseDirectory>false</includeBaseDirectory>

  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}</directory>
      <outputDirectory></outputDirectory> 
      <includes>
        <include>com/dataobjects/**</include>
      </includes>
    </fileSet>    
  </fileSets>
</assembly>

【问题讨论】:

  • 标题并不意味着包含整个文本;它们旨在成为文本的简明摘要。

标签: maven-2 maven-assembly-plugin


【解决方案1】:

非常感谢 Pascal, 这东西真的很管用。 这是我添加的配置也使它工作..

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <id>abc</id>
            <phase>package</phase>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <configuration>
              <artifacts>
                <artifact>
                  <file>src/main/assembly/flight-assembly.xml</file>
                  <type>xml</type>
                  <classifier>flight</classifier>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
  </plugin>

【讨论】:

    【解决方案2】:

    Build Helper Maven Plugin 有一个build-helper:attach-artifact 允许附加要安装和部署的其他工件。它通常这样使用(来自Usage 页面):

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <!-- add configuration for antrun or another plugin here -->
          </plugin>
          ...
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
              <execution>
                <id>attach-artifacts</id>
                <phase>package</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>some file</file>
                      <type>extension of your file </type>
                      <classifier>optional</classifier>
                    </artifact>
                    ...
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </project>
    

    【讨论】:

    • 你不需要告诉程序集插件来进行附加吗?
    • @bmargulies 这确实是自动完成的。但是 OP 已将 appendAssemblyId 设置为 false 所以我假设第一个程序集在 installdeploy 期间被第二个程序集覆盖,并且只有一个工件“似乎”被发布(OP 没有不提供它们,但是当发生这种情况时,maven 会记录消息,我猜如果事情“按预期”工作,他就不会发布这个问题)。
    • 这非常有效地解决了我遇到的问题。我要补充一点,由于 codehaus 已经关闭,这个插件的文档和其他维护已经转移到这里:mojohaus.org/build-helper-maven-plugin
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2013-12-16
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多