Java Maven包错误:附加的工件必须具有与其对应的主工件不同的ID

Java Maven包错误:附加的工件必须具有与其对应的主工件不同的ID,java,spring,maven,Java,Spring,Maven,在:mvn包上获取此错误 每次构建都失败了,并且出现了相同的错误,我尝试重命名工件,并在pom文件中更改构建的依赖项。详情请参阅下文: 任何帮助都将不胜感激。 错误: pom.xml <?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" x

在:mvn包上获取此错误

每次构建都失败了,并且出现了相同的错误,我尝试重命名工件,并在pom文件中更改构建的依赖项。详情请参阅下文:

任何帮助都将不胜感激。 错误:

pom.xml

    <?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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.phil-hudson</groupId>
    <artifactId>compiled</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>war</packaging>

    <properties>

    <!-- Generic properties -->
    <java.version>1.8</java.version>

    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.5.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <dependency>
            <groupId>com.wordnik</groupId>
            <artifactId>swagger-jaxrs_2.10</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.8-b01</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2-promoted-b65</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>8.0.12</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.1.7.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <warName>disney-product-feed</warName>
                </configuration>
            </plugin>

        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>


</project>

看起来像是spring boot maven插件和您的maven版本中的一个bug

据我所知,Maven知道WAR插件将生成文件
target/compiled-1.0-SNAPSHOT.WAR
。当它询问
springbootmaven插件的输出时,它将得到相同的名称。由于Maven不知道插件的作用,它将假定两者都配置为创建相同的输出文件并停止,因为这不是您想要的(文件将相互覆盖)


尝试使用最新版本的Maven或针对
spring boot Maven插件
提交一个bug。让他们知道您使用的是哪个版本的Maven。

我目前面临同样的问题。 但是,通过提供所需的参数finalName,我可以看到.war文件已经很好地启动了。 请注意,在这两种情况下(有和没有最终名称),我仍然会遇到错误消息


下面是我在Spring Boot项目上打开的问题的链接:

正如Dimitri所建议的,我通过向Spring Boot maven插件添加
分类器来解决这个问题:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <classifier>boot</classifier>
    </configuration>
</plugin>

org.springframework.boot
springbootmaven插件
靴子

所需的只是在
构建
部分包含一个
标记

<build>
    <finalName>myJar</finalName>
</build>

myJar

我认为这是特定于spring boot maven插件的,而不是一般的maven问题。以防万一,运行
mvn dependency:tree
,然后查看是否有名称冲突的工件。感谢您的帮助,我运行了它,看起来还可以。。我用输出更新了我的问题。是的,我只是去掉了SpringWar插件,它工作了,一定有一些冲突,但在日志中没有得到很好的处理。
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <classifier>boot</classifier>
    </configuration>
</plugin>
<build>
    <finalName>myJar</finalName>
</build>