如何使用maven-assembly-plugin在没有依赖关系的情况下部署快照

时间:2014-12-23 09:07:58

标签: maven jenkins maven-assembly-plugin maven-release-plugin

我正在使用mvn release-pluginassembly-plugin来部署具有依赖性的jar。当我使用mvn release时,它工作正常。它会创建两个文件:普通XXX.jarXXX.jar-with-dependencies.jar,并将它们都部署。 但我还需要使用mvn deploy将快照部署到另一个存储库。在这个存储库中,我只需要没有依赖项的XXX.jar。 所以我希望我可以使用mvn deploy部署快照版本而不依赖于设置。

POM.xml设置:

        ...
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.5.2</version>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
          <executions>
            <execution>
              <id>make-assembly</id> <!-- this is used for inheritance merges -->
              <phase>install</phase> <!-- bind to the packaging phase -->
              <goals>
                <goal>single</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        ...

PS:mvn clean install deploy将由jenkins scm pulling每天早上安排。

1 个答案:

答案 0 :(得分:3)

maven-assmbly-plugin生成的工件会自动附加到项目中,因此在您调用mvn deploy时会进行部署。 您可以做的是定义一个配置文件(例如'with-dependencies'),您可以在其中执行程序集插件。在这种情况下,如果您致电mvn deploy,它将构建一个-SNAPSHOT版本并将其推送到快照存储库,对于该版本,您必须调用mvn release:prepare release:perform -Pwith-dependencies

<profile>
  <id>with-dependencies</id>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.5.2</version>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id> <!-- this is used for inheritance merges -->
          <phase>install</phase> <!-- bind to the packaging phase -->
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</profile>