proyecto - maven java
¿Puedo agregar repositorios maven en la línea de comando? (7)
Soy consciente de que puedo agregar repositorios maven para buscar dependencias en ~ / .m2 / settings.xml. Pero, ¿es posible agregar un repositorio usando la línea de comando, algo así como:
mvn install -Dmaven.repository=http://example.com/maven2
La razón por la que quiero hacer esto es porque estoy usando una herramienta de integración continua donde tengo control total sobre las opciones de línea de comando que usa para llamar a maven, pero la administración de settings.xml para el usuario que ejecuta la herramienta de integración es un poco de una molestia.
No estoy seguro si puedes hacerlo usando la línea de comando. Por otro lado, puede agregar repositorios en el pom.xml como en el siguiente ejemplo. Usando este enfoque, no necesita cambiar el archivo ~ / .m2 / settings.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">
...
<repositories>
<repository>
<id>MavenCentral</id>
<name>Maven repository</name>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
...
<repository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
...
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>
http://people.apache.org/repo/m2-snapshot-repository
</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
...
</project>
Realmente no he usado maven 2 antes, nuestro sistema todavía está trabajando en maven 1.x debido a algunos problemas con maven 2.
Sin embargo, mirando la documentación para maven 2 parece que no hay propiedades específicas del sistema como esa. Sin embargo, podrías construir uno en tus poms / configuraciones usando las propiedades del sistema. Ver Propiedades del sistema parte de este http://maven.apache.org/settings.html
Por lo tanto, tendría $ {maven.repository} en su archivo de configuración y luego usaría el repositorio -Danven.repository como lo hizo anteriormente.
No estoy seguro de si esto funcionaría, pero con algunos ajustes, estoy seguro de que se te ocurrirá algo.
Como @Jorge Ferreira ya dijo, pon tus definiciones de repositorio en el pom.xml. Use los perfiles adittionally para seleccionar el repositorio para usar a través de la línea de comando:
mvn deploy -P MyRepo2
mvn deploy -P MyRepo1
Cree un POM que tenga la configuración del repositorio que desee y luego use un elemento principal en los POM de su proyecto para heredar los repositorios adicionales. El uso de un POM de "organización" tiene otros beneficios cuando un grupo de proyectos pertenece a un equipo.
Uno de los objetivos de Maven''t Project Object Model (POM) es capturar toda la información necesaria para reproducir de forma fiable un artefacto, por lo que se desaconseja aprobar los ajustes que impactan en la creación del artefacto.
Para lograr su objetivo, puede verificar su archivo settings.xml a nivel de usuario con cada proyecto y usar la opción -s (o --settings) para pasarlo a la compilación.
Asumiré aquí que usted está pidiendo esto porque de vez en cuando desea agregar un nuevo repositorio de terceros a sus compilaciones. Puedo estar equivocado, por supuesto ... :)
Su mejor opción en este caso es usar un proxy administrado como artifactory o nexus. Luego haga un cambio por única vez en settings.xml para configurar esto como un espejo para el mundo.
Cualquier repositorio de terceros que necesite agregar a partir de ese momento se puede gestionar a través del proxy.
Puedes hacer esto, pero es mejor que lo hagas en el POM como han dicho otros.
En la línea de comando, puede especificar una propiedad para el repositorio local y otro repositorio para los repositorios remotos. El repositorio remoto tendrá todas las configuraciones predeterminadas
El ejemplo a continuación especifica dos repositorios remotos y un repositorio local personalizado.
mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo
-Dmaven.repo.local="c:/test/repo"