我正在创建 parent-pom。在那里我们定义了 build->plugin->dependencies。 它可以从 Maven 获取依赖项,但无法从我们的内部 Maven 存储库获取依赖项。低于错误
<块引用>[ERROR] 无法执行目标 org.apache.maven.plugins:maven-antrun-plugin:1.2:check (validate) on 项目 parent-pom:目标的执行验证 org.apache.maven.plugins:maven-antrun-plugin:1.2:check failed: Plugin org.apache.maven.plugins:maven-antrun-plugin:1.2 或其中之一 无法解析依赖项:找不到工件 org.tools:build-tool:jar:1.0 在中央 (https://repo.maven.apache.org/maven2) -> [帮助 1]
它试图从 https://repo.maven.apache.org/maven2
而不是我们的内部 Maven 存储库中提取依赖项。我已经配置了存储库和依赖项管理,它仍然试图从 https://repo.maven.apache.org/maven2
获取而不是转到我们的内部存储库。
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.global</groupId>
<artifactId>parent-pom</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<repositories>
<repository>
<id>archiva.global</id>
<name>Internal Release Repository</name>
<url>https://archiva.global.com/repository/internal</url>
</repository>
<repository>
<id>archiva.snapshots</id>
<name>Internal Snapshots Repository</name>
<url>https://archiva.global.com/repository/snapshots</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>archiva.internal</id>
<name>Internal Release Repository</name>
<url>https://archiva.global.com/repository/internal</url>
</repository>
<snapshotRepository>
<id>archiva.snapshots</id>
<name>Internal Snapshots Repository</name>
<url>https://archiva.global.com/repository/snapshots</url>
</snapshotRepository>
</distributionManagement>
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.2</version>
...
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-launcher</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.tools</groupId>
<artifactId>build-tool</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
...
</project>
有什么我错过的吗?只有构建插件依赖没有得到解决,因为项目依赖正在从我们的内部存储库中得到解决。
答案 0 :(得分:2)
这是 maven 的默认行为。
在定义 <repository> .... </repository>
时,请确保使用您的内部存储库覆盖 <id>central</id>
。如果你不这样做,maven 仍然会联系 maven central 来解决依赖关系,如果你在 VPN 后面,没有适当的代理设置就不会工作。下面的清单将从您的内部存储库中获取您的所有 deps。
<repositories>
<repository>
<id>central</id>
<name>Internal Release Repository</name>
<url>https://archiva.global.com/repository/internal</url>
</repository>
<repository>
<id>archiva.snapshots</id>
<name>Internal Snapshots Repository</name>
<url>https://archiva.global.com/repository/snapshots</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
用于从您的内部存储库下载插件
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Internal Repo</name>
<url>https://archiva.global.com/repository/internal</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>