当一个ivy项目依赖一个maven项目(使用汇编插件)时,就会出现问题。例如:
maven项目:假设maven项目会部署2个快照包:比如一个是my-app-1.0.0-20130504.000602-1.jar,一个是my-app-1.0.0-20130504.001348-1-myzip.zip . pom.xml 如下所示。
<modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0.0-SNAPSHOT</version> <... ...> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <configuration> <descriptors> <descriptor>src/main/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> <configuration> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> <packaging>zip</packaging> <file>my-app-1.01-myzip.zip</file> </configuration> </plugin> </plugins> </build> </project>
常春藤项目
Ivy 项目依赖于上述 maven 项目发布的 2 个工件。ivy.xml 如下所示:
<configurations> <conf name="get-maven" /> </configurations> <dependencies> <dependency org="com.mycompany.app" name="my-app" rev="1.0.0-SNAPSHOT" changing="true" conf="get-maven->default"> <artifact name="my-app" ext="jar" type="jar"></artifact> <artifact name="my-app" ext="zip" type="zip" m:classifier="myzip"></artifact> </dependency> </dependencies>
问题:每次maven项目部署新快照到artifactory服务器时,ivy项目可以从artifactory服务器获取最新的my-app-xxx.jar,但无法获取最新的my-app-xxx-myzip。 zip(常春藤无法知道 zip 已更新,只能从本地缓存中检索 zip)。我要做的是删除本地缓存,然后再次运行 ivy 项目。
我做了一些调查,发现 ivy 任务“convertpom”没有将 app-xxx-myzip.zip 从 pom 转换为 ivy,在转换后的文件中只能找到 1 个工件(my-app-xxx.jar)常春藤.xml。不确定这是否是根本原因。
有人可以帮忙吗?如何获取 ivy 项目中两个工件的最新快照?
问候, 阿尔本