Máme pár legacy Java projektov, ktoré sme prevedené na Maven projects / modules. Predtým, všetky projekty boli NetBeans projektov a mali žiadny skutočný riadenie závislostí. Závislosti existovala na spoločnosti sieťovú jednotku a boli priamo uvedené ako Pohárov v NetBeans projekty z každého modulu. Na vnútorných závislostí, jednoduchý projekt odkazy boli použité. To bola bolesť vybudovať všetko, pretože programátor musel stavať všetko v správnom poradí.
Teraz, sme v pozícii, že sme mohli otvoriť všetky Maven moduly v IntelliJ IDEA a NetBeans. Avšak, mám problém zistiť, najlepší spôsob, ako kombinovať rôzne moduly a externých závislostí špecifickým spôsobom, ktorý zodpovedá v-dom plugin-ako štruktúru. Najmä s NetBeans (rozvoj s oboma IDEs musí byť možné).
Tu je, ako repozitáre git / projekt štruktúra zhruba vyzerá. Štruktúru priečinkov modulov je predvolené Maven štruktúru pre každý modul. Zoznam extra tejto stránky bol príliš nemotorná, tak som ho zaradili ako film...
Máme vnútorný maven repository pre veci a budovy s maven atď. pracuje. Pre Intellij IDEA môžem spustiť a ladenie konečný produkt pre customer1 cez vlastné spustite konfiguráciu, ktorá skopíruje potrebné súbory v potrebnej štruktúre:
S IntelliJ IDEA, môžem ladenia softvéru, ale myslím si, že prístup (vlastné IntelliJ spustiť config, ktorý som vytvoril, ukážte na položku všetky potrebné Pohárov a súbory priamo) je pomerne škaredé, a pre NetBeans som nemohol nájsť podobné "spustiť konfiguračný" mechanizmus.
A tak som sa snažil dosiahnuť to stavať proces vytvorením nového "Customer1Runnable" Maven projekt ako druh stavať popis, ktorý poukazuje na všetky potrebné Maven moduly. Na základe tohto, som veril, že by som mohol dosiahnuť, a automatism vytvoriť potrebný softvér štruktúry. Ergo kopírovať všetky moduly do plugin zložky a všetkých závislostí moduly do lib priečinok vo vnútri Customer1Runnable projektu, cez maven-montáž-plugin.
Po prvé, je môj predpoklad správny, že je to možné použiť prípade maven-montáž-plugin?
Samotný projekt nemá žiadne zdrojové súbory, to je len pom.xml a assembly-config.xml deskriptor. Som pripojený montáž-plugin balík fázy. Pri behu mvn package
príkaz všetky pripojené moduly sú postavené, ale pre vykonanie montáže-plugin mám nasledovný výstup:
Pre začiatok, len som sa snažil zahrnúť jeden modul na montáž deskriptor. Toto je XML (opicom-assembly.xml) za to:
<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 z Customer1Runnable projektu
<?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>
V pom modulu vyzerá takto:
<?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>
Vďaka za každú vstup na to, čo robím zle a ako to dosiahnuť s Maven.
ÚPRAVA: Ako sa požaduje, tu príklad projektu, ako ZIP-Súboru. https://drive.google.com/drive/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k?usp=sharing Materská adresáre ModuleGroupCustomer a ModuleGroupCommon robiť predstavujú git úloţísk v reálnom scenári. Relatívna modul cesta je spôsobené, pretože maven projekt, ktorý by mal byť môj "spustiť config" body " maven projektov v obidvoch úloţísk.
Možno som nedorozumenia Maven vo všeobecnosti? Myslel som, že, pokiaľ ide o prípady použitia pre riadenie závislostí podobné .Čistý nuget balíčkov, ale aj ako "projekt konfigurácia" ako obyčajné NetBeans/Intellij projektov.
Je lepšie jednoducho nalepiť na existujúce NetBeans projektov pre každodenné rozvoja?