Building a Webapp with Maven 2 - Como não deixar o Maven baixar um determinado plugin?

Pessoal,

Eu estou com um problema.

Onde eu trabalho existe uma série de plugins homologados para uso com o maven. Tive a necessidade de utilizar um plugin novo, que não existe neste repositório corporativo.

Eu então alterei o settings.xml e adicionei o repositório central do maven para que o novo plugin pudesse ser baixado.

O problema é que quando eu faço o build desta forma, o maven atualiza alguns plugins que eu tenho no meu repositório, me gerando erros. Um plugin que tenho no repositório corporativo foi modificado para que funcionasse com generics. Quando o maven roda acessando o repositório central (remoto) ele atualiza os meus plugins do repositório local, gerando erros no meu build. O plugin xdoclet foi alterado para funcionar com generics, e qdo o maven roda, ele baixa a versão mais nova deste plugin, dando erro qdo tenta gerar as implementações via xdoclet.

Minha dúvida é a seguinte:

“Existe uma forma de dizer ao Maven para não atualizar os plugins locais ou especificar uma lista de plugins que não devem ser atualizados?”

E ai,

Cara acho que não tem com fazer isso não, porque o plugin que você quer pode ter dependência de plugins mais novos os quais são atualizados automaticamente.

Agora de cabeça não vem nenhuma solução “automática”, mas vou dar uma idéia POG…

Porque você não pega o maven aponta o repositório central e baixa o plugin que falta, depois manualmente você coloca esse plugin no seu repositório corporativo e volta a utilizar o maven retirando o repositório central.

Não sei se funciona mas é um chute…

Vou dar uma olhada na documentação.

Eu tentei fazer isso, mas por algum motivo qdo estou offline, mesmo tendo já baixado os plugins, o maven tenta baixar de novo e não encontra o plugin no repositorio local.

Cara me passa o nome e a vesão do plugin que você quer utilizar e os plugins que você tem no seu repositório.

Mas me parece aquilo que te falei anteriormente, ta parecendo que o plugin que você quer utilizar depende de outros mais novos e ai não tem jeito você vai ter que atualizar as dependências do plugin senão ele não funciona :(. Acho que está na hora de você atualizar o repositório corporativo.

Acho que isso deveria resolver

    <groupId>com.bla</groupId>
    <artifactId>bla</artifactId>
    <version>1.0.0-interno</version>

Aí vc usaria assim:

<dependency>
    <groupId>com.bla</groupId>
    <artifactId>bla</artifactId>
    <version>1.0.0-interno</version>
    <scope>compile</scope>
</dependency>

Como não existe a versão 1.0.0-interno no repositório externo, só no interno, não deveria haver conflitos

Talvez tenha uma forma mais elegante, mas foi o que eu consegui pensar … rs

[]s

Conforme dito acima pelo Edufa, acredito que funcione com a utilização da tag <scope>compile</scope>

Boa Sorte !!!

Mas a dependência que o maven esta tentando baixar não é uma dependência declarada e sim de um plugin.


		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jasperreports-maven-plugin</artifactId>
				<configuration>
					<outputDirectory>${project.build.directory}/classes/</outputDirectory>
					<sourceDirectory>src/main/resources/</sourceDirectory>
					<xmlValidation>true</xmlValidation>
				</configuration>
				<executions>
					<execution>
						<phase>compile</phase>
						<goals>
							<goal>compile-reports</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

Eu posso fazer isso? Declara um escopo para um plugin? Na verdade verifiquei no DTD e não tem lugar pra esse parametro no plugin. A não ser que eu declare uma dependência desse plugin nas configurações … mas mesmo assim parece estranho … vou fazer outras tentativas.

[]'s

o ideal seria vc criar e administrar um repositorio seu. Pesquise sobre os benefícios que o nexus te proporciona.