que - ¿Cómo usar la arquitectura de plataforma en Maven para determinar la dependencia?
maven tutorial español (2)
Como dice la pregunta, hay una buena manera de usar dependencias basadas en la arquitectura de la plataforma mientras se construyen objetos de arte. Sé sobre los perfiles y cómo usarlos. Para este propósito especial no quiero incorporarlos a mi compilación.
El problema en detalle podría ser descrito como sigue:
- Proyecto de módulo multi maven
- La integración continua y las personas en el proyecto utilizan arquitecturas de plataforma distribuidas uniformemente
- Dependencia de la biblioteca del sistema nativo
Soluciones que no quiero usar en la configuración:
- Sin redundancia de dependencias.
- Sin perfiles de Maven (o al menos perfiles de Maven que son elegidos automáticamente por la arquitectura de la plataforma)
Como ejemplo :
Persona1
- (usando linux i686) construye proyecto
- Las bibliotecas x86 se incluyen en cada subproyecto y los artefactos resultantes se están construyendo.
Persona2
- (usando win32) construye proyecto
- Los bibliotecarios de 32 bits están agrupados como arriba
Integración continua
- se está ejecutando como el entorno de producción en Linux AMD64
- integrar bibliotecas amd64
Editar sobre perfiles
Sé que los perfiles son una solución para hacer esto. Pero lo que quiero lograr es que verifique su proyecto desde un control de versión de fuente aleatoria y genere un proyecto con bibliotecas nativas fuera de la caja sin hacer nada (siempre que la plataforma cumpla con el requisito de las configuradas).
No quiero configurar estas configuraciones de perfil ni quiero ejecutar un objetivo específico explícitamente. Si hay tal cosa con los perfiles, me gustaría ver un ejemplo que determine automáticamente la arquitectura de la plataforma y ejecute un destino. SI hay uno sin perfiles, lo preferiría porque es mucho menos complejo y tiene diferentes combinaciones de perfiles existentes (incluidas las pruebas y otros casos de uso).
Tener únicamente perfiles se siente un poco hinchado y se requieren esfuerzos manuales.
Espero que alguien tenga una buena sugerencia porque de alguna manera estoy atascado en esto.
¿Cuál es el problema con el uso de perfiles? Se han hecho exactamente para tal situación. Puede especificar la acción del perfil por sistema operativo / plataforma y agregar la dependencia. Completamente transparente.
La otra forma sería mover su biblioteca central a un módulo separado y tener un módulo para cada plataforma.
No conozco ninguna forma de hacer esto sin perfiles. Este es el caso de uso principal para el que se agregaron perfiles a maven. Puedes hacerlo usando lo siguiente:
<profiles>
<profile>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
</os>
</activation>
...
</profile>
<profile>
<activation>
<os>
<family>Linux</family>
<arch>x64</arch>
</os>
</activation>
...
</profile>
<profile>
<activation>
<property>
<name>integration-test</name>
</property>
</activation>
...
</profile>
</profiles>
Luego, cuando alguien verifica un proyecto y lo construye en una máquina con Linux x64, automáticamente obtendrá todo bajo el perfil de Linux x64. Si también proporcionaran la propiedad -Dintegration-test
en la línea de comandos, también activarían el perfil de integración-prueba. Puede tener cualquier número de perfiles activos, que se combinan para crear el POM efectivo para la construcción. Estos perfiles se pueden definir en un POM principal compartido para todos los proyectos en los que trabaja, de modo que los desarrolladores no tienen que cambiar sus archivos settings.xml.
Para obtener más información sobre la activación de perfiles, visite: http://maven.apache.org/guides/introduction/introduction-to-profiles.html .