हम की एक जोड़ी है, विरासत जावा परियोजनाओं, जो हम करने के लिए परिवर्तित मावेन परियोजनाओं / मॉड्यूल. इससे पहले, सभी परियोजनाओं थे NetBeans परियोजनाओं और था कोई वास्तविक निर्भरता प्रबंधन. बाहरी निर्भरता के अस्तित्व पर कंपनियों के नेटवर्क ड्राइव थे और सीधे रूप में शामिल जार में NetBeans परियोजनाओं के प्रत्येक मॉड्यूल. के लिए आंतरिक निर्भरता, सरल परियोजना के संदर्भ में इस्तेमाल किया गया. यह एक दर्द था का निर्माण करने के लिए, क्योंकि सब कुछ प्रोग्रामर था, का निर्माण करने के लिए सब कुछ सही क्रम में.
अब, हम स्थिति में हैं कि हम कर सकते हैं सभी मावेन मॉड्यूल में IntelliJ विचार और NetBeans. हालांकि, मैं कर रहा हूँ परेशानी हो रही बाहर figuring सबसे अच्छा तरीका गठबंधन करने के लिए अलग अलग मॉड्यूल और बाहरी निर्भरता में एक विशिष्ट तरीका है, जो अनुरूप करने के लिए घर में प्लगइन की तरह संरचना है । के साथ विशेष रूप से NetBeans (विकासशील दोनों के साथ इडस संभव होना चाहिए).
यहाँ है कि कैसे git रिपॉजिटरी / परियोजना संरचना मोटे तौर पर की तरह लग रहा है. फ़ोल्डर संरचना के मॉड्यूल डिफ़ॉल्ट मावेन संरचना प्रत्येक मॉड्यूल के लिए. सूची सुविधा के लिए, इस साइट भी अनाड़ी था, तो मैं इसे शामिल के रूप में स्क्रीनशॉट...
हम एक आंतरिक maven रिपोजिटरी के लिए सामान और निर्माण के साथ मावेन आदि । काम कर रहा है. के लिए इंटेलीजे आइडिया मैं कर सकते हैं चलाने के लिए और डिबग अंत उत्पाद के लिए customer1 के माध्यम से एक कस्टम चलाने के विन्यास, जो प्रतियां आवश्यक फ़ाइलों में आवश्यक संरचना:
के साथ IntelliJ विचार है, मैं डिबग कर सकते हैं सॉफ्टवेयर है, लेकिन मुझे लगता है कि दृष्टिकोण (कस्टम इंटेलीजे चलाने config मैं बनाया, ओर इशारा करते हुए करने के लिए सभी की जरूरत जार और सीधे फ़ाइलें) बजाय बदसूरत है, और के लिए NetBeans मैं नहीं मिल सकता है एक समान "चलाने के लिए विन्यास" तंत्र है ।
तो मैं करने की कोशिश की प्राप्त करने के लिए इस प्रक्रिया का निर्माण, बनाने के द्वारा एक नया "Customer1Runnable" Maven परियोजना के रूप में एक प्रकार के निर्माण का वर्णन है, जो अंक के लिए सभी की जरूरत मावेन मॉड्यूल. इस के आधार पर, मैं विश्वास मैं कर सकता है और प्राप्त करने का यंत्र बनाने के लिए आवश्यक सॉफ्टवेयर संरचना है । फलस्वरूप कॉपी सभी मॉड्यूल में एक प्लगइन फ़ोल्डर और सभी निर्भरता के मॉड्यूल में एक उदारीकरण फ़ोल्डर के अंदर Customer1Runnable परियोजना का उपयोग कर, मावेन-विधानसभा-प्लगइन है ।
पहली बार बंद, है, मेरी धारणा सही है कि यह एक संभव उपयोग के मामले के लिए maven-विधानसभा-प्लगइन?
परियोजना ही नहीं है किसी भी स्रोत फ़ाइलों, यह केवल एक pom.xml और assembly-config.xml वर्णनकर्ता. मैं संलग्न विधानसभा-प्लगइन पैकेज के लिए चरण. चल रहा है जब mvn package
आदेश जुड़े सभी मॉड्यूल का निर्माण कर रहे हैं, लेकिन निष्पादन के लिए विधानसभा की-प्लगइन मैं प्राप्त निम्न आउटपुट:
शुरुआत के लिए, मैं केवल शामिल करने की कोशिश की एक मॉड्यूल में विधानसभा वर्णनकर्ता. इस एक्सएमएल (opicom-assembly.xml) इसके लिए:
<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 के Customer1Runnable परियोजना
<?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>
पोम के एक मॉड्यूल इस तरह दिखता है:
<?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>
धन्यवाद के लिए किसी भी इनपुट पर मैं क्या कर रहा हूँ गलत है / कैसे इस लक्ष्य को हासिल करने के साथ Maven.
संपादित करें: अनुरोध के रूप में, यहाँ एक उदाहरण परियोजना के रूप में ज़िप फ़ाइल. https://drive.google.com/drive/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k?usp=sharing माता पिता निर्देशिकाओं ModuleGroupCustomer और ModuleGroupCommon का प्रतिनिधित्व करते हैं git रिपॉजिटरी में परिदृश्य. रिश्तेदार मॉड्यूल पथ के कारण होता है, क्योंकि मावेन परियोजना होना चाहिए, जो मेरे "चलाने के लिए config" अंक के लिए मावेन परियोजनाओं दोनों में खजाने.
शायद मैं कर रहा हूँ गलतफहमी मावेन सामान्य में? मैंने सोचा था कि के मामले में यह के उपयोग के मामलों के लिए निर्भरता प्रबंधन के लिए इसी तरह की .नेट nuget संकुल, लेकिन यह भी "के रूप में परियोजना विन्यास" की तरह साधारण NetBeans/इंटेलीजे परियोजनाओं.
यह बेहतर है बस के लिए छड़ी करने के लिए मौजूदा NetBeans परियोजनाओं के लिए दिन के लिए दिन के विकास?