1) Deploy:
Sabemos que para acessar a sessão “Manager” do tomcat, o browser aponta para a url “/manager/html”. Pois bem se você pretende usar o Maven Tomcat Plugin preste bem atenção para não vacilar como eu
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<server>tomcat</server>
<update>true</update>
<url>http://192.168.0.2:8080/manager/html</url>
</configuration>
</plugin>
Bastante óbvio não acham ? Para o deploy até que funciona, agora se você usar “mvn tomcat:undeploy” vai receber “de Grátis” um errão bem bacana. Para resolver isso remova o “/html” no fim ficando dessa forma:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<server>tomcat</server>
<update>true</update>
<url>http://192.168.0.2:8080/manager</url>
</configuration>
</plugin>
2) Problema com OutOfMemory Java Heap Space:
Crie uma variável de ambiente (um JAVA_HOME por exemplo) chamada MAVEN_OPTS
Ficando no seguinte formato (exemplo no linux):
export MAVEN_OPTS=”-Xms256m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=512m”
Se você tem 1gb de memória logicamente você não irá trocar os valores de 512 por 1024.
Essa configuração pode variar dependendo do tamanho do seu projeto, nas chamadas de comandos do tipo mvn compiler:compile , mvn package, mvn tomcat:deploy etc…
3) JAR Fantasma
Não sei se você já reparou mas…
Usando o Eclipse WTP e criando um projeto web dinâmico a IDE cria dentro do workspace o seguinte diretório oculto “metadata”. Dentro dele temos vários outros mas a atenção especial fica para esse aqui:
“.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps”
Ele guarda o seu projeto web dinâmico para que você possa utilizar aquele “plugin” para iniciar/parar o tomcat e o mais incrível e emocionante foi que o Maven ao inves de pegar o JAR do repositório local
resolveu adotar essa pasta como bicho de estimação para pegar os JARS e compor o WAR :]
Mandei o comando no slack “find -iname meujar.jar” dentro do workspace abri todos os jars encontrados e o único jar que não havia sido alterado era o que estava nesse diretório.
Sim isso aconteceu porque o projeto em questão não é um novo projeto Maven do zero e sim um projeto já existente com estrutura de diretórios própria no qual o Maven foi incorporado.
E agora como eu faço para “rodar” minha APP sem os JARS que estão na WEB-INF/lib então ??
mvn jetty:run
4) Desabilitar testes
use -Dmaven.test.skip=true
Exemplo:
mvn package -Dmaven.test.skip=true
5) Remover jars sem uso do WAR para deploy
Adicione no pom.xml :
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceExcludes>WEB-INF/lib/algumacoisa-1.0.1.jar, WEB-INF/lib/outra_coisa_que_nao_quero-3.1.0.jar</warSourceExcludes>
</configuration>
</plugin>