Java Maven试图两次部署同一工件
我正在使用Maven构建我的项目,但是当我运行命令Java Maven试图两次部署同一工件,java,maven,Java,Maven,我正在使用Maven构建我的项目,但是当我运行命令mvn clean package deploy时,它会尝试部署工件两次。我将buildhelpermaven插件配置为附加使用自定义插件创建的ear文件 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</art
mvn clean package deploy
时,它会尝试部署工件两次。我将buildhelpermaven插件配置为附加使用自定义插件创建的ear文件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}.ear</file>
<type>ear</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
构建助手maven插件
1.9.1
附加工件
包裹
附加工件
${project.build.directory}/${project.artifactId}-${project.version}.ear
耳朵
当我禁用buildhelpermaven插件时,剩下的工件(只有pom)只上传一次
我应该怎么做才能让Maven只部署一次额外的ear文件
速率
编辑
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group.id</groupId>
<artifactId>my.artifact.id</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>My Project</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<scm>
<!-- Config -->
</scm>
<distributionManagement>
<repository>
<!-- Config -->
</repository>
<snapshotRepository>
<!-- Config -->
</snapshotRepository>
</distributionManagement>
<dependencies>
<!-- My Dependencies here -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.9</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeGroupIds>my.group.ids.that.need.to.be.included</includeGroupIds>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>my.group.id</groupId>
<artifactId>my.custom.plugin</artifactId>
<version>1.0.1</version>
<configuration>
<params>
<!-- My params -->
</params>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>my-custom-goal</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Release Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4</version>
<configuration>
<goals>clean package deploy</goals>
<tagBase>https://my.tagbase</tagBase>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}.ear</file>
<type>ear</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<modules>
<!-- My Modules -->
</modules>
</project>
4.0.0
my.group.id
我的.artifact.id
1.0.0-SNAPSHOT
聚甲醛
我的项目
UTF-8
org.apache.maven.plugins
maven依赖插件
2.9
复制依赖项
包裹
复制依赖项
${project.build.directory}
假的
假的
真的
my.group.id.that.need.to.be.include
my.group.id
my.custom.plugin
1.0.1
包裹
我的自定义目标
org.apache.maven.plugins
maven发布插件
2.4
干净包部署
https://my.tagbase
org.codehaus.mojo
构建助手maven插件
1.9.1
附加工件
包裹
附加工件
${project.build.directory}/${project.artifactId}-${project.version}.ear
耳朵
首先,您正在使用模块,并试图在父pom(依赖插件、构建助手等)中执行奇怪的操作。在父母中,永远不应该有像你在pom中那样的执行。您应该在适当的模块中进行适当的配置/执行,因为此定义将继承所有子模块
是否要创建ear文件?然后您应该使用打包ear
,您的ear文件将通过使用mvn deploy
进行部署
此外,您似乎误解了生命周期的原因,如果您致电:
mvn clean package deploy
这可以简化为:
mvn clean deploy
因为包生命周期是部署的一部分,所以我建议您阅读相关信息。为什么要使用build helper插件来附加ear文件?您使用的是maven ear插件还是打包ear?(完整的pom文件会很有帮助)。@khmarbaise我已经添加了完整的pom(删除了一些敏感信息)。ear文件是使用依赖项添加的,并使用自定义插件进行调整。这就是为什么没有maven-ear插件相关:。我现在正在进行mvn clean deploy,现在它只上传一次。谢谢!!您应该清理您的父pom,因为它是错误的,尽管它当前的工作方式与您预期的一样。