Actualmente estoy trabajando en un ambiente donde yo definen las reglas para un montón de gente. Actualmente usamos el Hudson y Artifactory, y quiero evaluar si el interruptor de Jenkins y el Nexus vale la pena el costo de migración (pero esta no es la cuestión).

A eval, he de configuración de Maven, Jenkins, y el Nexus localmente, y el intento de encontrar una configuración para utilizar como parte de la configuración anterior, así que no puedo comparar las soluciones. El problema aquí es:

  • Cuando yo uso una existente POM y generar e implementar a través de Jenkins, que se implementa automáticamente a nuestro antiguo entorno.
  • Entonces he tratado de definir el deploymentManagement sección en mi .settings archivo en Maven, pero esto no está permitido (véase La Configuración De Maven,

    Nota: la instalación y configuración de usuario no puede ser utilizado para agregar proyecto compartido de la información – por ejemplo, el ajuste o de toda la empresa.

  • Yo podría, por supuesto, copiar todo, y cambiar el distributionManagement dentro de cada POM, pero me gustaría usar el mismo (no una copia) ejemplo, en las diferentes instalaciones.

Nuestro actual raíz POM contiene la siguiente sección:

<distributionManagement>
    <repository>
      <uniqueVersion>false</uniqueVersion>
      <id>company-central</id>
      <name>Company central maven respository</name>
      <url>https://company.com/artifactory/libs-releases</url>
    </repository>
    <snapshotRepository>
      <id>company-snaps</id>
      <name>company-snapshots</name>
      <url>https://company.com/artifactory/libs-snapshots</url>
    </snapshotRepository>
    <downloadUrl>https://company.com/artifactory/libs-releases</downloadUrl>
  </distributionManagement>

¿Cuál es la manera más fácil de utilizar de la misma POM, pero para implementarlo a diferentes administradores de repositorio?

PS: he leído configurar maven pom archivo para diferentes escenarios de implementación y no le gusta (en mi contexto), La implementación de Maven artefacto a múltiples repositorios con diferentes configuraciones es realmente una cuestión diferente. Varias implementaciones en maven es un enfoque interesante, pero habría que modificar un montón de Pompones sólo para este propósito.

«Cuando yo uso una existente POM y generar e implementar a través de Jenkins, que se implementa automáticamente a nuestro viejo medio ambiente». – ¿por qué? ¿tienes la edad env definido en todos los pompones? o en una compartida de los padres pom? donde es?
He añadido una sección a la sección de la POM quiero reemplazar.
ok. una pregunta más: ¿por qué se tendría que modificar un montón de pompones sólo para este propósito, si vas con los perfiles de enfoque? afaik única cosa que tiene que cambiar es la raíz pom, las referencias a su versión y, a continuación, sólo tiene que ejecutar la construcción con un perfil diferente?
Yo entiendo eso. Pero la adición de la materia a la raíz de POM (y la entrega en el futuro) polutes (tipo de), porque soy la única que necesita que la variación. Y si hago lo que sólo una nueva versión (no públicamente a implementar), tengo al menos para actualizar todos los otros programas de medidas que dependen de este.

OriginalEl autor mliebelt | 2013-05-02

1 Comentario

  1. 13

    Estoy en un equipo parecido, proporcionando herramientas a los demás. Tenemos nuestro padre POM como el de abajo. La prod versión se activa a menos que uno de los miembros de mi equipo añade -DuseTestRepo=true a la mvn de la línea de comandos. Usted podría experimentar con el cambio de la activación para buscar un archivo en particular que sólo existe en el servidor Jenkins (por ejemplo). También me he preguntado si Maven interpola propiedades en repo Url. Si lo hace, usted podría hacer <url>${my.remote.repo}/releases</url> y definir my.remote.repo en settings.xml. No he probado que uno.

    <profiles>
        <profile>
            <id>test-repository</id>
            <activation>
                <property>
                    <name>useTestRepo</name>
                    <value>true</value>
                </property>
            </activation>
            <properties>
            </properties>
            <distributionManagement>
                <repository>
                     <!-- ... -->
                </repository>
                <snapshotRepository>
                     <!-- ... -->
                </snapshotRepository>
            </distributionManagement>
        </profile>
    
        <profile>
            <id>prod-repository</id>
            <activation>
                <property>
                    <name>!useTestRepo</name>
                </property>
            </activation>
            <properties>
            </properties>
            <distributionManagement>
                <repository>
                     <!-- ... -->
                </repository>
                <snapshotRepository>
                     <!-- ... -->
                </snapshotRepository>
            </distributionManagement>
        </profile>

    Como a la entrega de la (implementación) experimental padres POM – que sería la implementación a su prueba Nexus repo, ¿verdad? Y ninguno de sus desarrolladores tienen acceso a eso, solo a ti. Así Artifactory contendrá el real com.company:corporate-parent:1.0 POM, y el Nexus com.company:corporate-parent:1.0 que contiene los cambios que se requieren para su prueba.

    También me gustaría considerar la posibilidad de cambiar el local de la repo en su settings.xml para no mezclar los artefactos de los dos remoto repos.

    Gran respuesta, voy a probarlo, y volverá con algunos comentarios.
    He comprobado ahora, e incluso ofreció una versión, donde una parte del perfil se encuentra en la raíz del pom, y la Url (y contraseñas) están contenidas en la instalación o configuración de usuario. Así que hay un interruptor, y el hormigón POMs no tiene que tener esa información, también. El interruptor de -P test-repo hace toda la magia de entonces.
    De acuerdo a la esquema usted no puede tener <distributionManagement> en settings.xml
    de acuerdo, es por eso que <distributionManagement> se incluye en la matriz del POM.

    OriginalEl autor user944849

Dejar respuesta

Please enter your comment!
Please enter your name here