Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven编织工件的范围_Java_Maven_Dependencies_Aspectj - Fatal编程技术网

Java maven编织工件的范围

Java maven编织工件的范围,java,maven,dependencies,aspectj,Java,Maven,Dependencies,Aspectj,我有一个项目foo-instrumented,它依赖于foo 该项目实际上使用附加代码插入foo,并替换它。也就是说,foo是foo instrumented的编译时依赖项,但它绝对不是运行时依赖项(foo instrumented替换foo),它不应该传播到子级(也就是说,依赖于foo instrumented的项目不应该最终依赖于foo) 对于这种依赖关系,是否有适当的maven范围,或者其他解决方案 Edit:我的请求不够清楚:虽然foo不应该在子项目依赖项中结束,但是foo的依赖项应该结

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

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

对于这种依赖关系,是否有适当的maven范围,或者其他解决方案

Edit:我的请求不够清楚:虽然
foo
不应该在子项目依赖项中结束,但是
foo
的依赖项应该结束(例如,如果
foo
依赖于
log4j
,那么依赖于
foo的项目应该将
log4j
作为其依赖项的一部分),这似乎排除了提供的
范围

谢谢


编辑:好吧,我需要在这里说一句话:有没有真正的人真正理解MAVEN文档?我看了一些,猜猜是什么:没有解释,没有插图,只有大量的XML呕吐。XML呕吐不是文档,各位!

你不能排除依赖,但仍然包含它的依赖。 但是,您可以为未插入指令的依赖项定义排除项,并将依赖项添加到其他模块中(再次)。当您将依赖项定义为
foo插入指令的
时,请执行以下操作:

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

酒吧
foo仪器化
酒吧
福
您应该使用范围。在您的foo工具化项目中:

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

酒吧
福
聚甲醛
进口

这将把foo的依赖项拉到foo工具中,而不包括foo。

这是我目前正在做的事情,但它不是很优雅。恐怕没有更好的方法。这是目前最有希望的答案,但我没有成功地让它工作(我仍然需要在编译/编织时拉依赖项)@Rom1-您还需要将foo作为编译时依赖项(scope->compile;no-type元素)进行拉取。如果这仍然不起作用,您可以发布pom.xml for foo instrumented吗?我有点不愿意发布我的pom文件,但在声明导入依赖项之后,我得到了一个警告:[警告]生成配置错误:跳过缺少、空或损坏的inpath条目:/home/me/.m2/repository/bar/foo/0.1.0-SNAPSHOT/foo-0.1.0-SNAPSHOT。pom@Rom1-听起来您的本地repo中的pom文件有问题。当您删除它并在foo项目中执行
mvn安装时会发生什么情况?