java - 如何在 Ivy 中使用不同的分类器下载多个 Maven 依赖项?

标签 java maven build dependencies ivy

我试图依赖 Neo4j server jarNeo4j server jar - static-web.jar在 Ivy 。我正在尝试类似的事情

<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
<info organisation="org.jimwebber" module="neo4j-koans"/>
<dependencies>
    <dependency org="org.springframework.data" name="spring-data-neo4j" rev="1.0.0.RELEASE">
        <exclude module="jms"/>
        <exclude module="jmxtools"/>
        <exclude module="jmxri"/>
        <exclude org="org.slf4j" name="slf4j-log4j12"/>
    </dependency>
    <dependency org="org.aspectj" name="aspectjrt" rev="1.6.11.RELEASE"/>
    <dependency org="org.aspectj" name="aspectjtools" rev="1.6.11.RELEASE"/>
    <dependency org="org.neo4j.app" name="neo4j-server" rev="1.5-SNAPSHOT" m:classifier="static-web"/>
    <dependency org="org.neo4j.app" name="neo4j-server" rev="1.5-SNAPSHOT"/>
    <dependency org="org.neo4j" name="neo4j-community" rev="1.5-SNAPSHOT"/>
    <dependency org="org.neo4j" name="neo4j-shell" rev="1.5-SNAPSHOT"/>
    <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="1.7.5"/>
    <dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="1.7.5"/>
    <dependency org="com.sun.jersey" name="jersey-client" rev="1.3"/>
    <dependency org="org.mockito" name="mockito-all" rev="1.8.5"/>
    <dependency org="junit" name="junit" rev="4.7"/>        
</dependencies>
</ivy-module>

但我从来没有下载过“staic-web”.jar,现在也出现错误。有人知道该怎么做吗?

感谢您的任何提示!

/彼得

最佳答案

这是检索与 Maven 模块关联的多个 Artifact 的方法:

<dependency org="org.neo4j.app" name="neo4j-server" rev="1.5-SNAPSHOT">
    <artifact name="neo4j-server" type="jar" />
    <artifact name="neo4j-server" type="jar" m:classifier="static-web"/>
</dependency>

由于 Maven 使用分类器引用其他 Artifact 的方式,语法很奇怪。

需要将 neo4j 快照存储库添加到您的 ivysettings.xml 文件中(快照版本不会发布到 Maven Central)

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
            <ibiblio name="neo4j-snapshot" m2compatible="true" root="http://repo.neo4j.org/content/repositories/snapshots"/>
        </chain>
    </resolvers>
</ivysettings>

其他问题

版本更正

<dependency org="org.aspectj" name="aspectjrt" rev="1.6.11"/>
<dependency org="org.aspectj" name="aspectjtools" rev="1.6.11"/>

存储库 POM 损坏

使用快照存储库的问题是有时 POM 会损坏。 Ivy 无法处理以下文件:

http://repo.neo4j.org/content/repositories/snapshots/org/neo4j/app/neo4j-server/1.5-SNAPSHOT/neo4j-server-1.5-SNAPSHOT.pom

这可以防止ivy下载neo4j-server arifacts....

[ivy:retrieve] :::: WARNINGS
[ivy:retrieve]  io problem while parsing ivy file: http://repo.neo4j.org/content/repositories/snapshots/org/neo4j/app/neo4j-server/1.5-SNAPSHOT/neo4j-server-1.5-SNAPSHOT.pom: Impossible to load parent for file:/home/mark/.ivy2/cache/org.neo4j.app/neo4j-server/ivy-1.5-SNAPSHOT.xml.original. Parent=org.neo4j.build#parent-pom;25
[ivy:retrieve]      module not found: org.neo4j.app#neo4j-server;1.5-SNAPSHOT
..
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      ::          UNRESOLVED DEPENDENCIES         ::
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      :: org.neo4j.app#neo4j-server;1.5-SNAPSHOT: not found
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::

解决方法

在设置文件中配置 ivy 以使用 url resolver 直接检索 Artifact 。 ibiblio resolver用于 POM 有效的所有其他模块。

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
            <ibiblio name="neo4j-snapshot" m2compatible="true" root="http://repo.neo4j.org/content/repositories/snapshots"/>
        </chain>
        <url name="neo4j-snapshot-hack">
              <artifact pattern="http://repo.neo4j.org/content/repositories/snapshots/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
        </url>
    </resolvers>
    <modules>
        <module organisation="org.neo4j.app" name="neo4j-server" resolver="neo4j-snapshot-hack"/>
    </modules>
</ivysettings>

这意味着可能会跳过绕过的 POM 文件中的传递依赖项。如果 POM 无法正常工作,那也是没有办法的

关于java - 如何在 Ivy 中使用不同的分类器下载多个 Maven 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804253/

相关文章:

c++ - 在 Eclipse 中设置构建输出目录 - c++

linux - 在命令行 linux 上从 github 构建软件?

ubuntu - 如何将 GraphicsMagick 与应用程序捆绑在一起?

spring - 处理 POM : [FATAL] Non-parseable POM. ..PITarget 时出现 Maven 错误,保留 xml 名称

maven 存储库订单

java - While 循环未使用 jframe 实现执行

java - Android Studio : Images do not show up while debugging app on phone, 但在模拟器上做

java - SonarQube - 无法连接到 > localhost/0 :0:0:0:0:0:0:1:9000

java - 使用 Bi 谓词对数组进行排序

java - 是否应该不鼓励使用 java.net.HttpURLConnection,因为 org.apache.http.client.HttpClient 更好?