删除Maven Pom中的重复依赖项

时间:2017-07-25 15:45:14

标签: linux windows maven netbeans notepad++

我想在maven pom.xml中删除重复的依赖项。

我想答复多种工具Linux,Notepad ++,Netbeans,Intellij ......甚至...... VIM等。

示例(我可以明显删除,但我希望搜索替换答案)

  `<dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-jetty-http</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-jetty-http</artifactId>
        <version>2.7</version>
    </dependency>`  

请在本地写回答链接如果删除可能会令人沮丧。感谢。

4 个答案:

答案 0 :(得分:3)

您可以使用mvn dependency:tree命令查找项目中的重复依赖项。

<exclusions>标记用于pom的<dependency>标记,以从maven项目中排除重复的依赖项。

<dependencies>
    <dependency>
      <groupId>test.ProjectX</groupId>
      <artifactId>ProjectX</artifactId>
      <version>2.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  
          <groupId>test.ProjectY</groupId>
          <artifactId>ProjectY</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>

答案 1 :(得分:2)

运行      mvn干净 它会告诉你重复的依赖关系。然后删除它们。

答案 2 :(得分:2)

dependency:analyze-duplicate分析pom.xml中的and标记,并确定重复声明的依赖项。

mvn dependency:analyze-duplicate

答案 3 :(得分:0)

由于pom.xml是XML,因此您也可以使用XSLT:

  1. 转到https://www.freeformatter.com/xsl-transformer.html

  2. 使用此XSLT:

    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
    <xsl:template match="/*">
        <dependencies>
            <xsl:for-each-group select="dependency" group-by="concat(groupId , '|', artifactId)">
                <xsl:sequence select="."/>
            </xsl:for-each-group>
        </dependencies>
    </xsl:template>
    
    </xsl:stylesheet>
    
  3. 从您的pom.xml中剪切<dependencies>部分作为输入

  4. 将XSLT的输出粘贴回pom.xml