【问题标题】:mvn - project uses incorrect dependency version, even though it is explicitely definedmaven - 项目使用不正确的依赖版本,即使它是明确定义的
【发布时间】:2014-12-14 14:48:35
【问题描述】:

我有一个非常糟糕的问题 - 有 A、B、C 三个项目。C 的版本为 1.0.5。我想用这个。 A 和 B 都在他们的 POMS 中明确定义了这个依赖版本。但是,在运行时,它们使用 1.0.2。

它们都共享一个 R 根 POM,但这应该无关紧要。

传说:

  • A - 门户网站
  • B - 持久性
  • C - 文本处理
  • R - myProjectRoot(根 pom)

当我运行项目 A 的 main() 时,它会尝试初始化 spring 上下文,它会导入 B 上下文,而 B 上下文又包含 C 上下文。在 1.0.2 版本中,C 上下文包含 B 上下文,这会导致循环导入异常,如下所示:

例外:

Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:persistenceApplicationContext.xml]
Offending resource: class path resource [portletsApplicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:textProcessingApplicationContext.xml]
Offending resource: URL [jar:file:/C:/Users/Simon/.m2/repository/com/myProject/PersistenceModule/1.2.6-SNAPSHOT/PersistenceModule-1.2.6-SNAPSHOT.jar!/persistenceApplicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:persistenceApplicationContext.xml]
Offending resource: URL [jar:file:/C:/Users/Simon/.m2/repository/myProject/TextProcessing/1.0.2/TextProcessing-1.0.2.jar!/textProcessingApplicationContext.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Detected cyclic loading of URL [jar:file:/C:/Users/Simon/.m2/repository/com/myProject/PersistenceModule/1.2.6-SNAPSHOT/PersistenceModule-1.2.6-SNAPSHOT.jar!/persistenceApplicationContext.xml] - check your import definitions!
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:235)
                    ........
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.myProject.myProject.portlets.demo.SolrStatementTest.main(SolrStatementTest.java:27)
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:textProcessingApplicationContext.xml]
Offending resource: URL [jar:file:/C:/Users/Simon/.m2/repository/com/myProject/PersistenceModule/1.2.6-SNAPSHOT/PersistenceModule-1.2.6-SNAPSHOT.jar!/persistenceApplicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:persistenceApplicationContext.xml]
Offending resource: URL [jar:file:/C:/Users/Simon/.m2/repository/myProject/TextProcessing/1.0.2/TextProcessing-1.0.2.jar!/textProcessingApplicationContext.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Detected cyclic loading of URL [jar:file:/C:/Users/Simon/.m2/repository/com/myProject/PersistenceModule/1.2.6-SNAPSHOT/PersistenceModule-1.2.6-SNAPSHOT.jar!/persistenceApplicationContext.xml] - check your import definitions!
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:235)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:186)
    at 
..........
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:229)
    ... 20 more
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:persistenceApplicationContext.xml]
Offending resource: URL [jar:file:/C:/Users/Simon/.m2/repository/myProject/TextProcessing/1.0.2/TextProcessing-1.0.2.jar!/textProcessingApplicationContext.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Detected cyclic loading of URL [jar:file:/C:/Users/Simon/.m2/repository/com/myProject/PersistenceModule/1.2.6-SNAPSHOT/PersistenceModule-1.2.6-SNAPSHOT.jar!/persistenceApplicationContext.xml] - check your import definitions!
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:235)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:186)

    ... 31 more
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Detected cyclic loading of URL [jar:file:/C:/Users/Simon/.m2/repository/com/myProject/PersistenceModule/1.2.6-SNAPSHOT/PersistenceModule-1.2.6-SNAPSHOT.jar!/persistenceApplicationContext.xml] - check your import definitions!
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:326)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)

    ... 42 more

一个(portlet)POM:

<?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>
    <url>http://maven.apache.org</url>

    <name>portlets</name>
    <groupId>
com.myProject</groupId>
    <artifactId>portlets</artifactId>
    <packaging>war</packaging>
    <version>0.1.1-SNAPSHOT</version>

    <properties>

        <liferay.version>6.2.1</liferay.version>
        <hibernate.version>4.2.13.Final</hibernate.version>
    </properties>

    <parent>
        <groupId>
com.myProject</groupId>
        <artifactId>myProjectRoot</artifactId>
        <version>0.10</version>
    </parent>

    <scm>
        <developerConnection>scm:svn:https://myProject.com/scm/svn/portlets/portlets</developerConnection>
    </scm>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <tagBase>https://myProject.com/scm/svn/portlets/tags</tagBase>
                </configuration>
            </plugin> 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <dependencies>
   ... many dependencies here


        <!-- ============== myProject MODULES ============== -->
        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>PersistenceModule</artifactId>
            <version>1.2.6-SNAPSHOT</version>
            <type>jar</type>
            <exclusions>
                <exclusion>
                    <artifactId>javaee-web-api</artifactId>
                    <groupId>javax</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>EntityModule</artifactId>
            <version>1.6</version>
            <type>jar</type>
            <exclusions>
                <exclusion>
                    <artifactId>javaee-web-api</artifactId>
                    <groupId>javax</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>Translator</artifactId>
            <version>1.0.1</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>Tagger</artifactId>
            <version>1.0.3</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.myProject.utils</groupId>
            <artifactId>WordNetUtil</artifactId>
            <version>1.3</version>
            <type>jar</type>
        </dependency>
    </dependencies>
</project>

B POM:

<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>
    <url>http://maven.apache.org</url>

    <name>PersistenceModule</name>
    <groupId>com.myProject</groupId>
    <artifactId>PersistenceModule</artifactId>
    <version>1.2.6-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>com.myProject</groupId>
        <artifactId>myProjectRoot</artifactId>
        <version>0.10</version>
    </parent>

    <scm>
        <developerConnection>scm:svn:https://myProject.com/scm/svn/persistence/PersistenceModule</developerConnection>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <excludes>
                        <exclude>**/ratedPosts/**</exclude>
                        <exclude>**/testingMaterial/**</exclude>
                        <exclude>**/tempmyProjectFLD/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <excludes>
                        <exclude>**/ratedPosts/**</exclude>
                        <exclude>**/testingMaterial/**</exclude>
                        <exclude>**/tempmyProjectFLD/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <tagBase>https://myProject.com/scm/svn/persistence/tags</tagBase>
                </configuration>
            </plugin> 
        </plugins>
    </build>

    <dependencies>
        <!-- MONGO -->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
        </dependency>

        <!-- utils -->
        <dependency>
            <groupId>net.sf.opencsv</groupId>
            <artifactId>opencsv</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>

        <!-- mail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
        </dependency>
        <dependency>
            <groupId>com.myProject.harvest.utils</groupId>
            <artifactId>java-libpst</artifactId>
        </dependency>

        <!-- Java -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>myProject</groupId>
            <artifactId>TextProcessing</artifactId>
            <version>1.0.5</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
        </dependency>

        <!-- myProject -->
        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>EntityModule</artifactId>
            <version>1.6</version>
        </dependency>

        <!-- SPRING-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <!-- test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito</artifactId>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>

        <!-- Parsing -->
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
        </dependency>

        <!-- Social Network libs -->
        <dependency>
            <groupId>com.restfb</groupId>
            <artifactId>restfb</artifactId>
        </dependency>

    </dependencies>
</project>

C POM:

<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>
    <name>TextProcessing</name>
    <url>http://maven.apache.org</url>

    <groupId>myProject</groupId>
    <artifactId>TextProcessing</artifactId>
    <version>1.0.6-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>com.myProject</groupId>
        <artifactId>myProjectRoot</artifactId>
        <version>0.10</version>
    </parent>

    <scm>
        <developerConnection>scm:svn:https://myProject.com/scm/svn/utils-translation/TextProcessing/trunk</developerConnection>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>Tagger</artifactId>
            <version>1.0.3</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>Translator</artifactId>
            <version>1.0.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.myProject</groupId>
            <artifactId>EntityModule</artifactId>
            <type>jar</type>
            <version>1.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>javaee-web-api</artifactId>
                    <groupId>javax</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <type>jar</type>
        </dependency>
    </dependencies>
</project>

R(根)POM: 由所有其他 pom 继承。

<?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>

    <name>myProjectRoot</name>
    <groupId>com.myProject</groupId>
    <artifactId>myProjectRoot</artifactId>
    <version>0.11-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <powermock.version>1.5.6</powermock.version>
        <spring.version>4.1.1.RELEASE</spring.version>
        <spring.data.version>1.6.1.RELEASE</spring.data.version>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <hibernate.version>4.3.6.Final</hibernate.version>
    </properties>

    <!-- NEXUS configuration -->
    <distributionManagement>
        <repository>
            <id>nexus</id>
            <name>Releases</name>
            <url>https://myProject.com/nexus/content/repositories/releases/</url>
            <layout>default</layout>
        </repository>
        <snapshotRepository>
            <id>nexus</id>
            <name>Snapshots</name>
            <url>https://myProject.com/nexus/content/repositories/snapshots/</url>
            <layout>default</layout>
        </snapshotRepository>
    </distributionManagement>

    <scm>
        <developerConnection>scm:svn:https://myProject.com/scm/svn/myProjectroot/trunk</developerConnection>
    </scm>

    <build>
        <!-- Global settings of maven plugins across myProject. Can be overriden with custom plugin managment, not recommended. -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.1</version>
                </plugin> 
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.9.1</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
            </plugin> 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
<!--            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>-->
        </plugins>
    </build>

    <!-- Used for setting global versions of projects used across myProject. 

    In your project only declare groupId and artifactId to use a dependency with 
    a version and configuration used in this pom. -->
    <dependencyManagement>
        <dependencies>

................................ many more..................

            <!-- myProject DEPENDENCIES -->

            <dependency>
                <groupId>com.myProject</groupId>
                <artifactId>EntityModule</artifactId>
                <version>1.4.1-SNAPSHOT</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>com.myProject</groupId>
                <artifactId>PersistenceModule</artifactId>
                <version>1.2.3</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>com.myProject.analysis</groupId>
                <artifactId>ContentModule</artifactId>
                <version>1.2-SNAPSHOT</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>myProject</groupId>
                <artifactId>TextProcessing</artifactId>
                <version>1.0.5</version>
                <type>jar</type>
            </dependency>
            <!-- harvests -->
            <dependency>
                <groupId>com.myProject</groupId>
                <artifactId>DocumentHarvest</artifactId>
                <version>1.0.1</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>com.myProject</groupId>
                <artifactId>harvest-Twitter</artifactId>
                <version>1.0</version>
                <type>jar</type>
            </dependency>

        </dependencies>
    </dependencyManagement>

</project>

我注意到,即使我在使用的特定快照中的 pom 包含 1.0.5 C 依赖项,它仍然显示正在使用的可传递导入的依赖项是 1.0.2。看截图: 您可以在图像上看到,TextProcessing 1.0.2 是 VIA PersistenceModule。而且正在使用的依赖项(它的 pom 已打开)将依赖项设置为 1.0.5。我从依赖关系树而不是项目本身打开 POM,以确保我真的在查看特别使用的快照的依赖关系。

【问题讨论】:

    标签: java spring maven dependencies version


    【解决方案1】:

    所以问题是在我的父 pom 中使用的 (0.10) 是定义为 1.0.2 的 C 项目。

    A 项目有 B,它在 1.0.5 中引用了 C,因此 A 在 1.0.5 中应该有 C,但是,A 从 R(来自 Parent/Root)获取了 C 版本 1.0.2。显然,它具有更高的优先级。这可能是因为 maven 采用依赖版本取决于它在到达版本之前必须走多远。选择了最小深度(第一次命中),即 1.0.2,这是我的问题。

    解决方案是我首先应该做的——从父模块中删除我自己的模块。现在它需要传递良好的版本。

    我在某处读到,将自己的模块保存在父模块中以解析它们之间的版本是一种不好的做法。经过很长时间我实际上是通过经验找到原因,为什么这是一个不好的做法。

    感谢@sorencito 建议检查 mvn dependency:tree。它向我展示了一个结构,它帮助我在谷歌上搜索this stack overflow question,这让我想起了旧的父版本。

    【讨论】:

      【解决方案2】:

      您的 portlet pom 依赖于版本 1.2.4-SNAPSHOT 中的 PersistenceModule,但它应该是 1.2.6-SNAPSHOT(它定义了版本 1.0.5 中对 TextProcessing 的依赖)。我想您的 1.2.4-SNAPSHOT 版本取决于导致错误的 TextProcessing 的旧版本 1.0.2。

      顺便说一句,您应该从父 pom.xml 中管理的依赖声明中删除所有版本。我建议对所有依赖项始终如一地这样做。

      【讨论】:

      • 嗨,我编辑了我的帖子。 1.2.4-SNAPSHOT 也依赖于 1.0.5。我目前也在用 1.2.6 还是不行
      • 我确实删除了父 pom 中的依赖版本,但不适用于模块间依赖,只有外部依赖,因为如果我想在父级中拥有顶级版本,我将不得不碰撞父级和因此撞到孩子,因此撞到父母等等。
      • @Ev0oD 如果它们是模块间依赖关系,我建议使用相同的版本。但是,我想您已经完成了所有技巧,例如在 IJ IDEA 中重新导入所有 mvn 项目、mvn dependency:tree 以查看依赖项来自何处、mvn clean 等等,对吧?
      • 同版本不可行。许多开发人员开发模块并在实现功能等时发布版本,我们根据需要提高其模块的版本。我没有导入 IDEA - 我不使用它,AFAIK 它不是免费的。我没有尝试依赖:树,我现在会尝试。 mvn clean 当然一直都是。
      【解决方案3】:

      我认为,在这样的多模块项目中,如果你有 POM 与父子关系,我们应该使用依赖管理。在您的父 POM 中使用 &lt;dependencyManagement&gt;。见http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

      【讨论】:

      • 我确实使用它。检查父pom,它在那里。并且在您发表评论时在那里。
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2013-04-07
      • 2016-08-13
      相关资源
      最近更新 更多