it-swarm-pt.tech

Posso adicionar repositórios maven na linha de comando?

Estou ciente de que posso adicionar repositórios maven para buscar dependências em ~/.m2/settings.xml. Mas é possível adicionar um repositório usando a linha de comando, algo como:

mvn install -Dmaven.repository=http://example.com/maven2

A razão pela qual desejo fazer isso é porque estou usando uma ferramenta de integração contínua, onde tenho controle total sobre as opções de linha de comando que ela usa para chamar maven, mas gerenciar um pouco o settings.xml para o usuário que executa a ferramenta de integração de um aborrecimento.

62
Sindri Traustason

Você pode fazer isso, mas provavelmente é melhor fazê-lo no POM, como já foi dito.

Na linha de comandos, você pode especificar uma propriedade para o repositório local e outro para os repositórios remotos. O repositório remoto terá todas as configurações padrão

O exemplo abaixo especifica dois repositórios remotos e um repositório local personalizado.

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
  -Dmaven.repo.local="c:\test\repo"
69
Rich Seller

Um dos objetivos do POM (Mavn't Project Object Model) é capturar todas as informações necessárias para reproduzir um artefato de maneira confiável, portanto, é altamente recomendável desencorajar configurações de impacto que afetam a criação do artefato.

Para atingir seu objetivo, você pode verificar seu arquivo settings.xml no nível do usuário com cada projeto e usar a opção -s (ou --settings) para transmiti-lo para a construção.

6
ddimitrov

Não tenho certeza se você pode fazê-lo usando a linha de comando. Por outro lado, você pode adicionar repositórios no pom.xml como no exemplo a seguir. Usando essa abordagem, você não precisa alterar o arquivo ~/.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>
5
Jorge Ferreira

Suponho aqui que você está perguntando isso porque ocasionalmente deseja adicionar um novo repositório de terceiros às suas compilações. Posso estar errado, é claro ... :)

Sua melhor aposta nesse caso é usar um proxy gerenciado, como artefato ou nexo. Em seguida, faça uma alteração única no settings.xml para configurá-lo como um espelho para o mundo.

Qualquer repo de terceiros que você precise adicionar a partir desse ponto pode ser tratado pelo proxy.

3
Kevin Wright

Como o @Jorge Ferreira já disse, coloque suas definições de repositório no pom.xml. Use profiles manualmente para selecionar o repositório a ser usado via linha de comando:

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1
3
Eduard Wirch

Eu realmente nunca usei o maven 2 antes, nosso sistema ainda está trabalhando no maven 1.x por causa de alguns problemas com o maven 2.

No entanto, olhando a documentação para o maven 2, parece que não existem propriedades específicas do sistema como essa. No entanto, você provavelmente pode criar um em seus poms/configurações usando as propriedades do sistema. Consulte Propriedades do sistema, parte deste http://maven.Apache.org/settings.html

Portanto, você teria $ {maven.repository} no seu arquivo de configurações e, em seguida, usaria o -Dmaven.repository como você faz acima.

Não tenho certeza se isso funcionaria, mas com alguns ajustes, tenho certeza de que você pode criar alguma coisa.

2
Henry B

Crie um POM com as configurações de repositório desejadas e use um elemento pai nos POMs do projeto para herdar os repositórios adicionais. O uso de um POM de "organização" tem vários outros benefícios quando um grupo de projetos pertence a uma equipe.

1
Steve Moyer