Tenemos un par de legado proyectos Java, que nos convierte a proyectos Maven / módulos. Previamente, todos los proyectos fueron proyectos de NetBeans y no tenía verdadera gestión de la dependencia. Dependencias externas existía en las empresas unidad de red y fueron directamente como Frascos en los proyectos de NetBeans de cada módulo. Para las dependencias internas, simples referencias del proyecto fueron utilizados. Era un dolor para construir todo porque el programador tenía que construir todo en el orden correcto.
Ahora, estamos en la posición en la que podemos abrir todas las Maven módulos en IntelliJ IDEA y NetBeans. Sin embargo, estoy teniendo problemas para averiguar la mejor manera de combinar los diferentes módulos y dependencias externas de una manera específica, que se ajusta en la casa de plugin-como la estructura. Especialmente con NetBeans (en desarrollo con ambos IDEs debe ser posible).
Aquí es cómo los repositorios git / la estructura del proyecto, aproximadamente se parece. La estructura de la carpeta de los módulos es el valor predeterminado de Maven de la estructura de cada módulo. La función de lista de este sitio era demasiado torpe, así que lo incluye como captura de pantalla...
Tenemos una interna repositorio de maven para la materia y de la construcción con maven, etc. está trabajando. Para Intellij IDEA de que me puede ejecutar y depurar el producto final para customer1 a través de una ejecución personalizada de configuración, que copia los archivos necesarios en la necesaria estructura:
Con IntelliJ IDEA, puedo depurar el software, pero creo que el enfoque personalizado IntelliJ ejecutar config que he creado, que apunta a que todos los necesarios Frascos y archivos directamente) es bastante feo, y para NetBeans no he podido encontrar una similar "a la configuración del" mecanismo.
Por lo que he tratado de lograr este proceso de construcción mediante la creación de un nuevo "Customer1Runnable" proyecto de Maven como una especie de descripción de la versión que apunta a que todos los necesarios Maven módulos. Basado en esto, yo creía que podía lograr y automatismo para crear la estructura del software. Ergo copia de todos los módulos en una carpeta plugin y todas las dependencias de los módulos en una carpeta lib dentro de la Customer1Runnable proyecto, utilizando maven-asamblea-plugin.
En primer lugar, es mi suposición correcta que este es un posible caso de uso para el maven-asamblea-plugin?
El proyecto en sí no tiene ninguna fuente de archivos, sólo es un pom.xml y el assembly-config.xml descriptor. Os adjunto la asamblea-plugin para el paquete de fase. Cuando se ejecuta el mvn package
comando todos conectados los módulos están construidos, pero para la ejecución de la asamblea-plugin me sale el siguiente resultado:
Para empezar, sólo he tratado de incluir un módulo en la asamblea descriptor. Este es el XML (opicom-assembly.xml) para que:
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
<id>opicom-assembly</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>my.company.reporting:module1</include>
</includes>
</moduleSet>
</moduleSets>
</assembly>
pom.xml de Customer1Runnable proyecto
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>1.6</version>
<groupId>my.company.customer1</groupId>
<artifactId>OpicomRunnable</artifactId>
<packaging>pom</packaging>
<name>OpicomRunnable</name>
<repositories>
<repository>
<id>Company-Maven-Repo</id>
<url>file:\\\\MyCompany\TFSDrop\MavenRepo</url>
</repository>
</repositories>
<modules>
<module>../my.company.customer1.module1</module>
<module>../my.company.customer1.module2</module>
.
.
.
<module>../../MyCompany_Common/Report/my.company.reporting.module1</module>
</modules>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<inherited>true</inherited>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>opicom-assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
El pom de un módulo se parece a esto:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>my.company</groupId>
<artifactId>reporting</artifactId>
<version>1.3</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>module1</artifactId>
<version>1.3</version>
<packaging>jar</packaging>
<dependencies>
<!-- external dependencies -->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<finalName>my-company-${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<outputDirectory>../build</outputDirectory>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</project>
Gracias por el aporte lo estoy haciendo mal aquí / ¿cómo lograr esto con Maven.
EDITAR: Conforme a lo solicitado, aquí un ejemplo de un proyecto como Archivo ZIP. https://drive.google.com/drive/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k?usp=sharing El padre directorios ModuleGroupCustomer y ModuleGroupCommon representan repositorios git en el escenario real. La relativa ruta de acceso del módulo es causado, debido a que el proyecto de maven que debería ser mi "ejecutar config" puntos a proyectos maven en ambos repositorios.
Tal vez soy yo la incomprensión de Maven en general? Yo pensaba en ella en términos de casos de uso para la gestión de la dependencia similar .Red de paquetes de nuget, pero también como "configuración del proyecto" comunes, como los de NetBeans/Intellij proyectos.
Es mejor simplemente se adhieren a la existente de proyectos de NetBeans para el día a día del desarrollo?