我的项目有一个pom.xml,我将其部署到公司内部的远程存储库
<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>ProjectMav</groupId>
<artifactId>ProjectMav</artifactId>
<version>1.0</version>
<distributionManagement>
<repository>
<id>man-release</id>
<name>mav release repo</name>
<url>http://xxxxxx.net/repositories/mav-release/</url>
</repository>
<snapshotRepository>
<id>mav-snapshots</id>
<name>mav snapshots repo</name>
<url>http://xxxxxx.net/repositories/mav-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
在我执行了“部署”之后我确实浏览了远程存储库,我看到那里的项目
我有另一个项目取决于上面提到的&#39; ProjectMav&#39;它的POM.xml如下
<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>mavtest</groupId>
<artifactId>mavtest-suite</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>ProjectMav</groupId>
<artifactId>ProjectMav</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>mav-release</id>
<name>mav release repo</name>
<url>http://xxxxxx.net/repositories/mav-release/</url>
</repository>
</repositories>
<build>
<testSourceDirectory>src/com/mav/</testSourceDirectory>
<resources>
<resource>
<directory>/resources</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
现在从eclipse开始,如果我做了一个Maven&gt;更新项目,它就不会得到我的&#39; ProjectMav&#39;的最新版本。到我的本地存储库。
但如果我清除本地仓库中的所有文件并进行maven更新,它就会获得我的项目
知道发生了什么事吗?
答案 0 :(得分:1)
我认为问题是maven eclipse插件的update
实际上没有mvn install
,如果你想覆盖1.0
部署的版本,那就是你需要的。 mvn eclipse插件命令类路径依赖关系的方式(你可以在包资源管理器中清楚地看到)是首先放置依赖jar,然后是jar之后解析的上游项目。这似乎适用于SNAPSHOT项目,因为插件知道使用你的项目而不是罐子,但是对于发布罐子它会变得混乱(或者至少我已经注意到它)。
话虽如此,您应该通过将本地版本更改为:
来完全避免此问题<version>1.1-SNAPSHOT</version>
然后,在依赖ProjectMav
的下游项目中,您将其依赖关系更新为1.1-SNAPSHOT
。版本管理可能很棘手,因此您可能需要查看maven发布插件,并在部署时处理项目的版本控制。