Pergunta

Estou ciente de que posso adicionar repositórios maven para a recuperação de 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 de eu querer fazer isso é porque eu estou usando uma ferramenta de integração contínua, onde eu tenho controle total sobre as opções de linha de comando que usa para chamar o maven, mas gerir o settings.xml para o usuário que executa a ferramenta de integração é um pouco de um aborrecimento.

Foi útil?

Solução

Você pode fazer isso, mas você está provavelmente melhor fazê-lo em POM, como outros têm dito.

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

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

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

Outras dicas

Um dos objetivos para o Maven não Projecto Modelo de Objecto (POM) é capturar todas as informações necessárias para reproduzi-um artefato, passando, assim, as configurações afetam o artefato criação é fortemente desencorajado.

Para alcançar seu objetivo, você pode verificar seu nível de usuário settings.xml arquivo com cada projeto e utilize-s (ou --configurações de opção de passá-lo para o construir.

Eu não tenho certeza se você pode fazer isso usando a linha de comando.Você pode, por outro lado, adicionar repositórios pom.xml como no exemplo a seguir.Usando essa abordagem, você não precisa alterar o ~/.m2/settings.xml arquivo.

    <?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>

Como @Jorge Ferreira já disse que colocar o seu repositório de definições de pom.xml.Utilização perfis adittionally para selecionar o repositório para uso através de linha de comando:

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1

Eu vou assumir aqui que você está perguntando isso porque as vezes você deseja adicionar um novo 3rd-party do repositório para sua cria.Posso estar errado, é claro...:)

Sua melhor aposta neste caso é usar um proxy gerido como artifactory ou nexus.Em seguida, fazer uma única alteração em settings.xml para definir este como um espelho para o mundo.

Qualquer parte 3 acordos de recompra que você precisa para adicionar a partir de que ponto pode ser manipulado através do proxy.

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

Contudo, examinando a documentação para o maven 2, parece que não há propriedades específicas do Sistema como esse.No entanto, você provavelmente poderia criar uma no seu poms/configurações usando as propriedades do Sistema.Consulte as propriedades do Sistema parte deste http://maven.apache.org/settings.html

Então, você teria r ${maven.repositório} em seu arquivo de configurações e, em seguida, usar o-Dmaven.repositório como acima.

Não tenho a certeza se isso iria funcionar, mas com alguns ajustes tenho certeza de que você pode vir acima com algo.

Criar um POM que tem o repositório de configurações que você deseja e, em seguida, usar um elemento do pai em seu projeto POMs para herdar os repositórios adicionais.O uso de uma "organização" POM tem vários outros benefícios, quando um grupo de projectos de pertencer a uma equipe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top