วิธีที่จะทำให้เป็นโปรแกรมเสริม-เหมือนสถาปัตยกรรม runnable?

0

คำถาม

พวกเรามีสองสามของมรดกตกทอดของจาวางยิ่งสนง.โครงการ,ซึ่งเราถูกต้อง Maven โครงการของ/มอดูล ความเดิมตอนที่แล้วทั้งยิ่งสนง.โครงการเป็น NetBeans งยิ่งสนง.โครงการและไม่มีจริงของการขึ้นแก่กันการจัดการ เว็บเบราว์เซอร์ภายนอก dependencies มีอยู่ในบริษัทเครือข่ายขับรถและตรงรวมเป็นโหลอยู่ใน NetBeans งยิ่งสนง.โครงการของแต่ละโมดูล สำหรับคนภายใน dependencies,ง่ายอย่างโครงการจะอ้างอิงไปยังเป็นใช้ได้ มันเป็นความเจ็บปวดเพื่อสร้างทุกอย่างเพราะว่าโปรแกรมเมอร์ต้องสร้างทุกสิ่งทุกอย่างในตอคำสั่ง

ตอนนี้พวกเรากำลังอยู่ในตำแหน่งนั้นเราสามารถเปิดทั้งหมด Maven อดูลใน IntelliJ ความคิดและ NetBeans. อย่างไรก็ตามฉันมีปัญหาการแก้ปัญหาหนทางที่ดีที่สุดที่จะรวมแตกต่างมอดูลและเว็บเบราว์เซอร์ภายนอก dependencies อยู่เฉพาะทางซึ่ง conforms ต้องอยู่ในบ้านหลังส่วนเสริม-เหมือนโครงสร้างของ. โดยเฉพาะอย่างยิ่งกับ NetBeans(การพัฒนากับทั้งสอง IDEs ต้องเป็นไปได้).

นี่คือวิธีที่ git repositories/โครงการนี้โครงสร้างของเวลาอย่างน้อยดูเหมือนว่า. โครงสร้างของโฟลเดอร์ของมอดูลเป็นค่าปริยาย Maven โครงสร้างของสำหรับแต่ละโมดูล รายการวามสามารถของคุณสมบัติของเว็บไซต์นี้เป็นเหมือนกัซุ่มซ่ามดังนั้นฉันถูกรวมมันเป็นภาพหน้าจอที่จับได้...

Structure Git Repos

เราต้องการภายใน maven สำหรับเก็บของที่แล้วตึกกับ maven เป็นต้น มันทำงานอยู่ สำหรับ Intellij ความคิดฉันสามารถวิ่งและการดีบั๊กที่สุดผลิตภัณฑ์สำหรับ customer1 ผ่านทางการกำหนดวิ่งการปรับแต่งซึ่งจำนวนสำเนาที่ต้องการแฟ้มที่ต้องการโครงสร้าง:

enter image description here

กับ IntelliJ ความคิดฉันสามารถการดีบั๊กโปรแกรมแต่ผมคิดว่าคนเข้าใกล้(กำหนดเอง IntelliJ วิ่ง config ฉันสร้างขึ้นมาจ่อกันต้องการขวดโหลกและแฟ้มโดยตรง)ค่อนข้างจะน่าเกลียดและสำหรับ NetBeans ฉันไม่สามารถค้นหาคล้ายกัน"วิ่งการปรับแต่ง"กลไกของมัน.

ดังนั้นฉันพยายามที่จะประสบความสำเร็จในส่วนนี้สร้างโดยโพรเซสกำลังสร้างใหม่"Customer1Runnable"Maven โครงการเป็นแบบสร้างรายละเอียด,ซึ่งคะแนนกันทั้งต้องการ Maven มอดูล จากนี้,ฉันเชื่อว่าฉันอาจจะประสบความสำเร็จในส่วและ automatism เพื่อสร้างที่ต้องการซอฟต์แวร์โครงสร้างของ. ดังนั้นมันจึงคัดลอกหมอดูลเข้าไปในโฟลเดอร์ส่วนเสริมและทั้งหมด dependencies ของมอดูลเข้า lib โฟลเดอร์ภายใน Customer1Runnable โครงการโดยใช้ maven-โรงเรี-ส่วนเสริม

อย่างแรกคือของฉันสมมติฐานที่ถูกต้องเพราะว่ามันเป็นเรื่องของที่เป็นไปได้ใช้คดีสำหรับ maven-โรงเรี-ส่วนเสริม?

หรับการออกแบบโครงการตัวมันเองยังไม่มีแหล่งแฟ้ม,มันเป็นเพียง pom.xml และ assembly-config.xml descriptor. ฉันติดที่โรงเรี-ส่วนเสริมไปที่กล่องนั้น ตอนที่กำลังคน mvn package คำสั่งเกี่ยวข้องกันหมอดูลสร้างขึ้น,แต่สำหรับการประหารของโรงเรี-ส่วนเสริมฉันได้ตามผลลัพธ์ที่ได้:

Windows CMD output of Customer1Runnable maven project

สำหรับคนเพื่งเริ่มต้นนะฉันแค่พยายามจะรวมคนในศูนย์ควบคุม kde ในโมดูลที่โรงเรี descriptor. นี่คือ XML(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>

ที่ pom ของศูนย์ควบคุม kde ในโมดูลดูเหมือนนี้:

<?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.

แก้ไข: ที่ร้องขอ,ที่นี่เป็นตัวอย่างโครงการที่ ZIP-แฟ้ม https://drive.google.com/drive/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k?usp=sharing พ่อแม่ไดเรกทอรี ModuleGroupCustomer และ ModuleGroupCommon ทำอย่างเป็นตัวแทนของ git repositories ในที่แท้จริงพวกเขายัง..... ที่มพันธ์กันกับศูนย์ควบคุม kde ในโมดูลเส้นทางเป็นสาเหตุเพราะที่ maven โครงการซึ่งควรจะเป็นของฉัน"หนี config"คะแนนต้อง maven งยิ่งสนง.โครงการทั้งสอง repositories.

บางทีฉันอาจเป็นเรื่องเข้าใจผิด Maven ในอนายพล? ฉันคิดว่าของมันในแง่ของใช้คดีสำหรับการขึ้นแก่กันการจัดการที่คล้ายกันเน็ nuget พัสดุแต่ก็ยังเป็น"โครงการการปรับแต่ง"เหมือนคนธรรมดา NetBeans/Intellij งยิ่งสนง.โครงการ.

มันจะดีกว่าง่ายๆทำตามที่มีอยู่ NetBeans งยิ่งสนง.โครงการสำหรับวันไปวันพัฒนาการ?

1

คำตอบที่ดีที่สุด

0

หลังจากอนานมาแล้ว tedious โพรเซสของศาลและข้อผิดพลาด,ฉันเจอวิธีแก้ปัญหานั่นคือทำงานสำหรับฉัน ดังนั้นฉันตัดสินใจที่จะแบ่งปันทางออนไลน์ในกรณีที่คนอื่นวิ่งไปคล้ายกันปัญหาแล้ว นี่คือเชื่อมโยงไปยังสุดท้าย zip แฟ้มจัดเก็บรรจุทำงานตัวอย่างยิ่งสนง.โครงการ=>แฟ้ม CustomerRunnable_RunningAssemblyPluginStackoverflowExample.zip https://drive.google.com/drive/u/0/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k

เกิดข้อผิดพลาดของฉันคือฉันเข้าใจผิดเกี่ยวกับวิธีที่โรงเรี-ส่วนเสริมการทำงาน คนวิธีที่ฉันประหารคนส่วนเสริมภายในของฉัน aggregator pom(CustommerRunnable)คือผิดพลาดที่นี่ maven โครงการเดียวที่อยู่ก่อนแล้วโดยเป็นพ่อแม่ pom.

ที่ CustommerRunnable pom.xml จะอ้างอิงไปยังลูกค้าทั้งโปรแกรมเสริมที่มอดูล พวกนั้นมอดูลต้องไม่ใช่คน CustommerRunnable เป็นพ่อแม่แต่ที่แตกต่างกั pom. งั้นฉันสร้างแยก maven โครงการ"ดิสทริบิวชัน". คน pom.xml ของดิสทริบิวชันกำหนทั้งหมดโปรแกรมเสริม(ต้องการลูกค้า maven อดูล)เป็น dependencies. มันก็ยังคงมี CustommerRunnable pom.xml เป็นชื่อเพจแมคคัลเลอร์ จึงตอนที่ฉันวิ่งไปที่การทำงานของโครงการใน NetBeans,เกี่ยวข้องกันหมอดูลยังสร้าง(หากจำเป็นต้องใช้).

มันก็ยัง configures ที่โรงเรีวนเสริมได้ ที่โรงเรีส่วนเสริมเป็นยึดติดกับคน maven ล่อง-ขั้นและทำให้ประหารกับมัน มันยังใช้กำหนดเองร้องต่อที่ประชุมในคี descriptor ซึ่งสำเนาทั้งหมดความเดิมตอนที่แล้วถูกกำหนดโปรแกรมเสริมในที่ถูกต้องโฟลเดอร์ได้ เรื่องนี้เสร็จสิ้นโดยการใช้ dependencySets บรวมและไม่รวมรูปแบบทั้งหมดหรอก เจอ https://maven.apache.org/plugins/maven-assembly-plugin/advanced-descriptor-topics.html สำหรับรายละเอียดกับเรื่องนี้ งั้นหนึ่ง dependencySet นฉบับคัดลอกขวดโหลแฟ้มของโปรแกรมเสริมต้องกา/โปรแกรมเสริมโฟลเดอร์โดยใช้รวมรูปแบบ. แล้วเรื่องนี้เข้าใกล้คือ inversed เพื่อทำการคัดลวดโหลอแฟ้มของเว็บเบราว์เซอร์ภายนอก dependencies จะเป็น/lib โฟลเดอร์

ที่ descriptor ยังบ่งบอกบางพิเศษแฟ้มที่จะคัดลอกจะเป็นพิเศษสถานที่ ขนาด exec-maven-ส่วนเสริมดังนั้นฉันสบายกันเริ่มเป็นลูกค้าซอฟแวร์ออกจาก NetBeans. ฉันไม่ได้รึยังจัดการเพื่อปรับแต่งประมวลผลโปรแกรมเสริมอย่างถูกต้องเกี่ยวกับคนต้องการ classpath อาร์กิวเมนต์.

Endresult ดูเหมือนนี้: Assembly folder after building

มันเป็นยังมีค่า noting ว่า configurations ของ"สร้างโครงการ","วิ่งโครงการ"และ"การดีบั๊กโครงการ"อยู่ใน NetBeans ต้องการเล็กๆหน่อยทำการแก้ไขได้ (การคลิกเมาส์ปุ่มขวาศูนย์ควบคุม kde ในโมดูล"ดิสทริบิวชัน"->"คุณสมบัติ"->ประเด็น"การกระทำ"

2021-11-25 17:07:28

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่