Pergunta

É possível fazer?

O ambiente: Multimodule pom consiste em 3 módulos: mm1, mm2, mm3. mm2 módulo tem mm1 como dependência. É possível pom compilação pai sem erros.

A pergunta:? É possível construir único módulo mm2 (ou seja, executar Maven diretório base mm2) sem instalar mm1 no repositório local

Graças.

Foi útil?

Solução

Sem instalação automática não, mas é possível construir projetos única escolhidos. Você precisa ter múltiplas módulo de construção (eu estou supondo que você faz). No modo reator todas as necessidades comando a ser executado a partir do raiz do reator .

Assim, no seu caso:

mvn reactor:make -Dmake.folders=mm2

Neste caso, você construir módulo e módulos mm2 do qual depende (mm1).

Links úteis:

De exemplos do livro eu construir único projeto persistir e seu modelo de projeto de dependência. Outros projectos estão intocados com mvn reactor:make -Dmake.folders=sample-persist

alt texto http: // www .sonatype.com / livros / maven-book / referência / figos / web / running_aro-dependencies.png

Outro comando útil é reactor:make-dependents que projectos de construção que dependem X.

Outras dicas

Eu não tenho certeza que você quer dizer exatamente por "sem instalar mm1 no repositório local". Você quer dizer anteriormente para a construção mm2 ou nunca?

Em caso de dúvida, talvez uma das novas opções de construção anunciadas no Maven Dicas e Truques: Opções de reactores avançados blog pode ajudar:

A partir da 2.1 liberação Maven, há nova linha de comando Maven opções que lhe permitem manipular a maneira que Maven vai construir projetos multimodule. estes novos opções são:

-rf, --resume-from
        Resume reactor from specified project
-pl, --projects
        Build specified reactor projects instead of all projects
-am, --also-make
        If project list is specified, also build projects required by the list
-amd, --also-make-dependents
        If project list is specified, also build projects that depend on projects on the list

Eu estava pensando especificamente às opções -pl e -am. Para construir um subconjunto dos módulos, execute o seguinte a partir do diretório raiz

$ mvn --projects mm2 --also-make install

No entanto, não estou certo de que este responde a sua pergunta (que não é totalmente claro para mim).

Isso vai contra o princípio de dependências de Maven2. Qual é o interesse de fazer isso exatamente?

No entanto, podemos imaginar para definir a dependência mm1 de mm2 como uma dependência system:

<dependency>
    <groupId>...</groupId>
    <artifactId>mm1</artifactId>
    <version>...</version>
    <scope>system</scope>
    <systemPath>../mm1/target/</systemPath>
</dependency>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top