我正在为Maven部署Nexus存储库,并在其上部署自定义原型。
我想执行 mvn archetype:generate
并提示内部+自定义原型列表。
我发现提示自定义原型(以符合人体工程学的方式,意味着没有URL)的唯一方法是将原型 - 目录路径定义为设置中的属性。这不是一个有效的解决方案,因为我想要几个目录(并且在CLI中不能覆盖此属性)。
有没有人知道如何做到这一点?
提前致谢,
[编辑] 我找到了相关的问题报告:http://jira.codehaus.org/browse/ARCHETYPE-273
我注意到在archetype:generate
期间,maven试图到达中央存储库:
[DEBUG] Searching for remote catalog: http://repo1.maven.org/maven2/archetype-catalog.xml
[DEBUG] Searching for remote catalog: http://repo1.maven.org/maven2
它以“连接超时”结束,因为我没有(并且不想)指定代理...
我不明白为什么maven不检查nexus目录......
答案 0 :(得分:6)
我还有一个Nexus配置为镜像Maven存储库,因此也是远程目录。
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://afbwt03:8081/nexus/content/groups/JavaRepo/</url>
</mirror>
和
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
只有在使用以下Maven命令行时才能访问远程目录:
mvn archetype:generate -DarchetypeCatalog=http://afbwt03:8081/nexus/content/groups/JavaRepo
如果我没有定义archetypeCatalog
变量,我会得到与您相同的行为:尝试访问repo1。 ......虽然配置了一些镜像。
答案 1 :(得分:1)
你需要
.m2 / settings.xml中活动个人资料中定义的 archetypeRepository 属性
将存储库和pluginRepositories重定向到您的镜像,在同一个ID“central”上。
当然,镜像定义了
关于archetype插件的Apache maven文档指定archetypeRepository是可定义的用户属性: http://maven.apache.org/archetype/maven-archetype-plugin/generate-mojo.html
您的.m2 / settings.xml应该包含这些最小元素
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>central</id>
<name>Mirror for maven central</name>
<url>http://mymvnhost:8081/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>dev</id>
<properties>
<archetypeRepository>http://mymvnhost:8081/nexus/content/groups/public/</archetypeRepository>
</properties>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
</settings>
答案 2 :(得分:0)
使用maven-archetype-plugin:3.1.1
,您必须
archetype-catalog.xml
以列出您的自定义原型settings.xml
,以添加ID为原型的此仓库。mvn archetype:generate -DarchetypeCatalog=remote
来自https://maven.apache.org/archetype/maven-archetype-plugin/generate-mojo.html:
如果您希望目录来自其他存储库,请将以下内容添加到settings.xml
<repository> <id>archetype</id> <url>https://repository.domain.com/path/to/repo/</url> </repository>