Maven原型目录:指定自定义位置

时间:2011-07-06 12:49:09

标签: maven nexus maven-archetype

我正在为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目录......

3 个答案:

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