¿Alguien sabe de una manera de establecer un orden de ruta de clases específico en Maven2, en lugar del orden aleatorio que parece experimentar en este momento?
Hay una serie de razones legítimas para querer hacer esto:
jboss jbossall-client 4.2.0.GA
org.hibernate hibernate 3.1
ambos contienen: org.hibernate.util.ReflectHelper.class, pero a la versión de jbossall-client le falta el método getFastClass.
De googlear veo que este es quizás un punto de discordia entre los entusiastas de maven y las personas que enfrentan este tema en particular, pero seguramente hay razones legítimas para ordenar classpath.
Cualquier consejo de cualquier persona que haya resuelto este dilema en particular sería muy apreciado.
Gracias
A partir de la versión 2.0.9, maven usa el orden pom para classpath, por lo que puedes manipularlo ahora. Sobre todo suprimimos las dependencias transitivas a bibliotecas externas que también incluimos directamente.
De las notas de la versión de maven 2.0.9:
MNG-1412 / MNG-3111 introdujo el ordenamiento determinista de las dependencias en el classpath. En el pasado, se usaba el orden de conjuntos naturales y esto conducía a resultados extraños. El orden ahora se conserva de su pom, con las dependencias agregadas por heredadas agregadas al final. En comstackciones que tenían dependencias conflictivas o duplicadas, esto puede introducir un cambio en el resultado. En resumen, si tiene problemas extraños con 2.0.9, eche un vistazo a las dependencias para ver si tiene conflictos en alguna parte.
Maven 2.0.9 agrega ordenamiento correcto, por lo que debe tener esa versión o más para que funcione lo siguiente.
En segundo lugar, necesitas el complemento actualizado. Los chicos de Maven están trabajando en una solución, está en su jira arreglarlo, pero esto es algo que necesitaba con urgencia. Mientras tanto, lo arreglé yo mismo y puedes extraer el código fuente del complemento modificado de github.
Editar: consulte http://jira.codehaus.org/browse/MECLIPSE-388
Hay dos formas de instalarlo, ya sea extraer mi código modificado e instalarlo o descargar el contenedor preconstruido y simplemente agregarlo.
Ejecute la maven install
desde el directorio de complementos que ha desprotegido y luego agregue lo siguiente en la sección de complementos de sus proyectos pom:
org.apache.maven.plugins maven-eclipse-plugin 2.8-cpfix
Alternativamente, si no desea descargar y comstackrse usted mismo, puede obtener el archivo jar e instalarlo usted mismo.
Una vez que haya ejecutado el archivo
mvn install:install-file -Dfile= -DgroupId=org.apache.maven.plugins \ -DartifactId=maven-eclipse-plugin -Dversion=2.8-cpfix -Dpackaging=jar
Independientemente de cómo lo instaló ahora cuando ejecuta mvn eclipse:eclipse
, recogerá el código modificado y ordenará las dependencias en función del orden que haya definido en su archivo pom, sin orden alfabético. También colocará el contenedor JRE en la parte superior de las dependencias.
Espero que la versión real de este código salga pronto, pero mientras tanto, esta solución me ha funcionado en mi proyecto y espero que también pueda ayudar a otros.