2012-09-04 21 views
12

Me gustaría crear un repositorio maven local de la compañía usando nexus. El repositorio no debe descargar nada de Internet público, todo lo que se necesita se agrega al repositorio. Los instaladores locales de desarrolladores deben descargar las bibliotecas y herramientas necesarias del nexo de la compañía. He conseguido hacer esto mediante el uso del espejo como este en settings.xml:Cómo usar solo el repositorio de nexus local de la compañía

<mirror> 
    <id>company-repository</id> 
    <name>Company releases repository</name> 
    <url>http://nexus.company.com/nexus/content/repositories/releases</url> 
    <mirrorOf>*</mirrorOf> 
</mirror> 

problema de esta solución es que sólo soy capaz de señalar a los comunicados de repositorio, me gustaría incluir thirdparty y repositorio de instantánea para buscar también. ¿Alguien tiene alguna idea de cómo debería hacerse eso? La etiqueta espejo solo toma una url.

También trató de definir el perfil predeterminado de esta manera:

<profile>    
    <id>defaultProfile</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <repositories> 
     <repository> 
      <id>company-thirdparty-repo</id> 
      <url>http://nexus.company.com//nexus/content/repositories/thirdparty</url> 
      <releases> 
       <checksumPolicy>fail</checksumPolicy> 
      </releases> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>company-releases-repo</id> 
      <url>http://nexus.company.com/nexus/content/repositories/releases</url> 
      <snapshots> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
       <checksumPolicy>fail</checksumPolicy> 
      </snapshots> 
      <releases> 
       <enabled>true</enabled> 
       <checksumPolicy>fail</checksumPolicy> 
      </releases> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://nexus.company.com/nexus/content/repositories/central</url> 
      <releases> 
       <enabled>true</enabled> 
       <checksumPolicy>fail</checksumPolicy> 
      </releases> 
      <snapshots> 
       <checksumPolicy>fail</checksumPolicy> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories>    
</profile> 

problema con esta solución es que si Maven no encuentran algo de esos repositorios todavía lo descarga desde repo.maven.apache.org. Apreciaré cualquier ayuda. ¡Gracias!

Respuesta

5

Se puede utilizar la combinación de ambos:

crear un grupo de repositorio para los apoderados de recompra pública remota (que lo denomina público). Usar esto para reflejar el único repositorio predeterminado de Maven, que es "central"

Para otros repositorios, simplemente añadirlo como repositorio de recompra/plugin

settings.xml se ve así:

<settings> 
    <mirrors> 
     <mirror> 
      <id>nexus</id> 
      <mirrorOf>central</mirrorOf> 
      <url>http://your/nexus/groups/public</url> 
     </mirror> 
    </mirrors> 

    <profiles> 
     <profile> 
      <id>nexus</id> 
      <repositories> 
       <repository> 
        <!-- for you to override settings of central --> 
        <id>central</id> 
        <url>http://a.fake.host</url> 
        <releases><enabled>true</enabled></releases> 
        <snapshots><enabled>true</enabled></snapshots> 
       </repository> 
       <repository> 
        <id>anotherRepo</id> 
        <url>http://your/nexus/groups/anotherRepo</url> 
        <releases><enabled>true</enabled></releases> 
        <snapshots><enabled>true</enabled></snapshots> 
       </repository> 

      </repositories> 
      <pluginRepositories> 
       <pluginRepository> 
        <!-- for you to override settings of central --> 
        <id>central</id> 
        <url>http://a.fake.host</url> 
        <releases><enabled>true</enabled></releases> 
        <snapshots><enabled>true</enabled></snapshots> 
       </pluginRepository> 

       <pluginRepository> 
        <id>anotherRepo</id> 
        <url>http://your/nexus/groups/anotherRepo</url> 
        <releases><enabled>true</enabled></releases> 
        <snapshots><enabled>true</enabled></snapshots> 
       </pluginRepository> 
      </pluginRepositories> 
     </profile> 
    </profiles> 

    <activeProfiles> 
     <activeProfile>nexus</activeProfile> 
    </activeProfiles> 
</settings> 
+0

En la etiqueta , debe decir "*"; de lo contrario, solo se reflejará la central (mire aquí: http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html) – khmarbaise

+0

@khmarbaise Eso es lo que trato de hacer: duplicar central con el grupo de repositorio nexus y agregar repos adicionales encima –

+0

Para resolver esto, debe configurarse en Nexus y no debe configurarse en settings.xml. – khmarbaise

Cuestiones relacionadas