【问题标题】:maven scope for woven artifacts编织工件的 Maven 范围
【发布时间】:2012-01-24 08:28:09
【问题描述】:

我有一个依赖于foo 的项目foo-instrumented

这个项目实际上用附加代码检测foo,并替换它。也就是说,foofoo-instrumented 的编译时依赖,但它绝对不是运行时依赖(foo-instrumented 替换 foo),它不应该传播给子级(也就是说,依赖于foo-instrumented 的项目应该最终依赖于foo)。

这种依赖是否有合适的 maven 范围,或其他解决方案?

编辑:我的要求不够清楚:虽然 foo 不应该出现在子项目依赖项中,但 foo 的依赖项应该(例如,如果 foo 依赖在log4j 上,那么依赖于foo-instrumented 的项目应该将log4j 作为其依赖项的一部分),这似乎排除了provided 范围。

谢谢!

编辑:好的,我需要在这里吐槽一下:有任何真实的、真实的人类真正了解 MAVEN 文档吗?我看了一些pages 并猜猜是什么:没有解释,没有插图,只是大量的 XML 呕吐物。 XML VOMIT 不是文档,伙计们!

【问题讨论】:

    标签: java maven dependencies aspectj


    【解决方案1】:

    您应该使用import 范围。在你的 foo-instrumented 项目中:

    <dependencies>
        <dependency>
            <groupId>bar</groupId>
            <artifactId>foo</artifactId>
            <type>pom</type>
            <scope>import</scope>
        <dependency>
    <dependencies>
    

    这会将 foo 的依赖项拉入 foo-instrumented 中,而不包括 foo。

    【讨论】:

    • 这是最有希望的答案,但我没有设法让它工作(我仍然需要在编译/编织时提取依赖项)
    • @Rom1 - 您还需要将 foo 作为编译时依赖项(范围-> 编译;无类型元素)。如果这仍然不起作用,您可以将 pom.xml 发布为 foo-instrumented 吗?
    • 我有点不愿意发布我的 pom 文件,但是在声明导入依赖项后,我收到了一个警告:[WARNING] build config error: skipping missing、empty or corrupt inpath entry: /home /me/.m2/repository/bar/foo/0.1.0-SNAPSHOT/foo-0.1.0-SNAPSHOT.pom
    • @Rom1 - 听起来你本地仓库中的 pom 文件有问题。当您删除它并在 foo 项目中执行 mvn install 时会发生什么?
    【解决方案2】:

    您不能排除依赖项,但仍包含它的依赖项。 但是,您可以为您的非检测依赖项定义一个排除项,并将依赖项添加到您的其他模块(再次)。当你定义对foo-instrumented的依赖时,做:

    <dependencies>
        <dependency>
            <groupId>bar</groupId>
            <artifactId>foo-instrumented</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>bar</groupId>
                    <!-- Exclude the non-instrumented dependency: -->
                    <artifactId>foo</artifactId>
                </exclusion>
            </exclusions>
        <dependency>
    
       <!-- Add the dependencies you need for foo to work here -->
    <dependencies>
    

    【讨论】:

    • 这是我目前正在做的,但不是很优雅。
    • 恐怕没有更好的办法了。
    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多