Em um arquivo POM pai do meu projeto, tenho esse perfil definindo algumas configurações úteis para este projeto (de modo que não posso me livrar deste POM pai):
<profile>
<id>wls7</id>
...
<build>
<plugins>
<!-- use java 1.4 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<source>1.4</source>
<target>1.4</target>
<meminitial>128m</meminitial>
<maxmem>1024m</maxmem>
<executable>%${jdk14.executable}</executable>
</configuration>
</plugin>
</plugins>
</build>
...
</profile>
Mas em meu projeto, eu gostaria apenas de substituir a configuração do maven-compiler-plugin para usar jdk5 em vez de jdk4 para compilar classes de teste.
É por isso que fiz esta seção no POM do meu projeto:
<profiles>
<profile>
<id>wls7</id>
<activation>
<property>
<name>jdk</name>
<value>4</value>
</property>
</activation>
<build>
<directory>target-1.4</directory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>my-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<fork>true</fork>
<executable>${jdk15.executable}</executable>
<compilerVersion>1.5</compilerVersion>
<source>1.5</source>
<target>1.5</target>
<verbose>true</verbose>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...
</profiles>
e não está funcionando ...
Eu até tentei sobrescrever a configuração em seções regulares do plug-in do meu POM (quero dizer, não para um perfil específico, mas para todo o meu POM).
Qual pode ser o problema?
Para esclarecer alguns dos meus requisitos:
- Não quero me livrar do POM pai e do perfil (wls7) definido dentro dele (já que preciso de muitas e muitas propriedades, configurações, ...) e esse não é o processo na minha empresa.
- Uma solução baseada na duplicação do POM pai e / ou do perfil definido dentro dele não é boa. Pois se o responsável do
pai POM mudar alguma coisa, eu
teria que denunciar no meu.
É apenas uma questão de herança (estender ou substituir um perfil, uma configuração de um POM de nível superior), então acho que deve ser possível com o Maven 2.
fonte
Respostas:
Substituir as configurações de um pom pai pode ser feito adicionando o
combine.self="override"
atributo ao elemento em seu pom.Tente alterar a configuração do plug-in para:
Para obter mais informações sobre substituição de plug-ins, consulte: http://maven.apache.org/pom.html
fonte
Eu tive o mesmo problema. Por padrão, meu plugin do maven war excluiu um arquivo html. Mas no meu perfil de testes de aceitação, eu queria esse arquivo incluído. Então, quando eu adicionei o plugin maven war novamente, ele não substituiu o padrão.
Para resolver esse problema, passei no atributo combine.self e funcionou bem.
Compilação padrão:
Perfil de teste de aceitação:
fonte
Você tentou desativar o perfil wls7 (desde maven 2.0.10):
Em seguida, adicione sua configuração em um perfil com um nome diferente ou diretamente no seu
pom.xml
.fonte