Temos um casal de legado projetos em Java, o que nós convertido para o Maven projetos / módulos. Anteriormente, todos os projetos foram NetBeans projetos e não tinha nenhuma real dependência de gestão. Dependências externas existentes nas empresas unidade de rede e foram incluídos diretamente como Jarras no NetBeans projetos de cada módulo. Para as dependências internas, simples referências de projeto foram utilizadas. Era uma dor que construir tudo, porque o programador tinha que construir tudo na ordem certa.
Agora, estamos na posição que podemos abrir todas as Maven módulos no IntelliJ IDEA e o NetBeans. No entanto, estou tendo problemas para descobrir a melhor forma de combinar os diferentes módulos e dependências externas de uma maneira específica, o que está de acordo com a in-house plugin-estrutura. Especialmente com o NetBeans (desenvolvimento com tanto IDEs deve ser possível).
Aqui está como os repositórios git / projeto estrutura de aproximadamente parece. A estrutura de pasta dos módulos é o padrão do Maven estrutura para cada módulo. O recurso de lista de este site era muito desajeitado, então eu incluí-lo como tela...
Temos uma interna maven repositório para o material e construção com o maven, etc. é trabalho. Para o Intellij IDEA do que eu possa executar e depurar o produto final para customer1 através de um personalizado configuração de execução, que copia os arquivos necessários necessária estrutura:
Com o IntelliJ IDEA, eu posso depurar o software, mas eu acho que a abordagem (personalizado IntelliJ executar config que eu criei, apontando para todos os JARs necessários e arquivos diretamente) é um pouco feio, e para o NetBeans eu não poderia encontrar um semelhante "executar" configuração do mecanismo.
Então, eu tentei alcançar este processo de compilação através da criação de um novo "Customer1Runnable" projeto Maven como uma espécie de descrição da compilação, o que aponta para todos os necessários Maven módulos. Com base nisso, eu acreditava que poderia alcançar e o automatismo para criar a necessária estrutura de software. Ergo cópia de todos os módulos em um plugin pasta e todas as dependências de módulos em uma pasta lib dentro do Customer1Runnable projeto, usando o maven assembly plugin.
Primeiro, é meu pressuposto correto de que este é um possível caso de uso para o maven assembly plugin?
O projeto em si não tem qualquer fonte de arquivos, ele é apenas um pom.xml e o assembly-config.xml descritor. Eu anexado o assembly-plugin para o pacote de fase. Quando executar o mvn package
comando de todos os módulos ligados são construídas, mas para a execução do assembly-plugin que eu receber a seguinte saída:
Para começar, eu só tentei incluir um módulo na assembleia descritor. Este é o XML (opicom-assembly.xml) para ele:
<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 projeto
<?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>
O pom de um módulo parecido com este:
<?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>
Obrigado por qualquer entrada sobre o que eu estou fazendo de errado aqui / como conseguir isso com o Maven.
EDITAR: Conforme solicitado, aqui um exemplo de projeto como Arquivo ZIP. https://drive.google.com/drive/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k?usp=sharing O pai diretórios ModuleGroupCustomer e ModuleGroupCommon não representam repositórios git no cenário real. A relativa caminho de módulo é causado, porque o projeto maven qual deve ser a minha "executar config" aponta para o maven projetos em repositórios.
Talvez eu seja mal-entendido Maven em geral? Eu pensava em termos de casos de uso para gerenciamento de dependência semelhante .Net pacotes nuget, mas também como "configuração de projeto" como ordinário NetBeans/Intellij projetos.
É melhor simplesmente manter o existente NetBeans projetos para o dia-a-dia de desenvolvimento?