gpt4 book ai didi

Maven "import"范围

转载 作者:行者123 更新时间:2023-12-01 15:01:27 26 4
gpt4 key购买 nike

我有该模块的模块和测试。
测试需要 resteasy-client,但模块不需要。
我不想混合模块依赖项和测试依赖项,我该怎么做?我试图使用 maven 'import' 范围。
pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>ru.my.project</groupId>
<artifactId>my-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<artifactId>my-module-1</artifactId>
<packaging>jar</packaging>
<name>This is one of my modules</name>

<dependencies>
<dependency>
<groupId>ru.my.project</groupId>
<artifactId>my-module-2</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

<!--I want to import dependencies for test from this pom:-->
<dependency>
<groupId>ru.my.project.test</groupId>
<artifactId>my-module-1-test</artifactId>
<type>pom</type>
<version>1.0</version>
<scope>import</scope>
</dependency>
</dependencies>

</project>

我的模块1.pom 在本地 Nexus 存储库中:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>ru.my.project.test</groupId>
<artifactId>my-module-1-test</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>Dependencies for testing module-1</name>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.11.Final</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.11.Final</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>

我似乎 mvn 看到了这个文件,但是编译失败:

[ERROR] /home/xxx.java:[5,38] error: package org.jboss.resteasy.client.jaxrs does not exist [ERROR] /home/xxx.java:[6,38] error: package org.jboss.resteasy.client.jaxrs does not exist [ERROR] /home/xxx.java:[7,38] error: package org.jboss.resteasy.client.jaxrs does not exist



但是,当我将这些依赖项复制粘贴到 module-1 的 pom.xml 中时,一切都很好!但我不想混合,它很快变得不可读。

最佳答案

这是因为 import范围仅在 <dependencyManagement> 内有效. (在封面下它基本上只是粘贴导入的内容。)

因此,它可用于管理(设置)您可能使用的依赖项版本,但实际依赖于它们需要单独声明(在 <dependencies> 内)。

到目前为止,我发现实现您的目标的最佳方法(据我所知)是创建像 my-module-1-testing-support 这样的模块这取决于使用 compile 的 JUnit、Mockito 等范围。然后你可以依赖 my-module-1-testing-support使用 test范围并使用 test 获取其依赖关系(传递)范围也是如此,如 Introduction to the Dependency Mechanism 中所述.

关于Maven "import"范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com