을 만드는 방법 플러그인처럼 건물 runnable?

0

질문

우리는 몇 가지의 유산을 자바 프로젝트,우리가로 변환하 Maven 프로젝트/modules. 이전에,모든 프로젝트 NetBeans 프로젝트 및 없었다 실제 종속성 관리합니다. 외부 종속에 존재하는 회사 네트워크 드라이브와 직접으로 포함되 항아리에 NetBeans 프로젝트의 각 모듈에 있습니다. 에 대한 내부 종속성,간단한 프로젝트 참조 사용되었습니다. 그것은 고통이었다 모든 것을 구축하기 때문에 프로그래머를 구축했 모든 것을 올바른 순서로 정렬됩니다.

지금,우리는 위치에는 우리가 열 수 있는 모든 Maven 모듈에서 IntelliJ IDEA 및 NetBeans. 그러나 나는 데 문제가 최고의 알아내는 방법으로 결합하는 다른 모듈과 외부 종속성을 특정한 방법으로,준수하우스 플러그인과 같은 구조입니다. 특히 NetBeans(개발과 모두 Ide 어야 가능).

는 방법은 다음과 같습니다:git repositories/프로젝트 구조가 거의 모습입니다. 폴더의 구조는 모듈은 기본 Maven 구조에 대한 각 모듈에 있습니다. 목록 기능을 본 사이트는 너무투 그래서 내가 포함되어 있으로 그것을 스크린샷...

Structure Git Repos

우리는 내부 maven 저장소에 대한 물건으로 건물 maven etc. 이 작동하는 것입니다. 에 대한 Intellij 아이디어를 실행하고 디버깅할 수 있는 최종 제품을 위한 customer1 를 통해 사용자 지정 실행을 구성하는 사본이 필요한 파일에서 필요한 구조:

enter image description here

와 IntelliJ IDEA,나를 디버깅할 수 있는 소프트웨어,하지만 제가 생각하는 방식(사용자 지정 IntelliJ 실행 config 내가 만들어 가리키는 모든 필요한 항아리와 파일에 직접)은 오히려 추악,그리고 NetBeans 을 찾을 수 없습니다"비슷한 실행 구성"메커니즘이 있습니다.

그래서 내가 달성하기 위해 노력이 빌드 프로세스를 만들어 새로운"Customer1Runnable"Maven 프로젝트의 일종으로 구축하는 설명하는 점에 필요한 모든 Maven 모듈을 사용합니다. 이를 바탕으로,나는 믿어 나를 달성할 수 있 및 자동화를 만들 필요한 소프트웨어 구조입니다. 따라서 사본에 모든 모듈로 플러그인 폴더와 모든 종속성의 모듈로 lib 폴더 안에 Customer1Runnable 프로젝트를 사용하여,maven-어셈블리 플러그인입니다.

먼저,내 가정이 올바른 이것이 가능한 경우에도 사용할 수 maven-어셈블리인?

프로젝트 자체에 있지 않는 모든 소스 파일,그것은 단지 pom.xml 고 assembly-config.xml 설명한다. 가 붙어 어셈블리 플러그인을 패키지 단계입니다. 실행하는 경우 mvn package 명령은 모든 연결된 모듈이 내장되어 있지만,실행을 위해 어셈블리 플러그인을 다음과 같이 출력:

Windows CMD output of Customer1Runnable maven project

우선,나만을 포함하는 시도 하나의 모듈 어셈블리에서 설명한다. 이 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 의 모듈을 다음과 같습니다:

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

감사에 대한 모든 입력에 내가 뭘 잘못된 여기/이것을 달성하는 방법으로 받는다는 것입니다.

편집: 로 요청한,여기에는 예제 프로젝트에 지퍼 파일입니다. https://drive.google.com/drive/folders/1ilJeTrOPgYgUTdOP0J4BQcBnPT5fls0k?usp=sharing 부모 디렉토리 ModuleGroupCustomer 및 ModuleGroupCommon 을 나타내 git 저장소에서 실시 시나리오이다. 상대 모듈 경로 인해 발생하기 때문에,maven 프로젝트해야 하는 나의"실행 설정"포인트를 maven 프로젝트 모두에서 저장소가 여기에 해당합니다.

어쩌면 내가 오해븐에서 일반? 나는 생각의 점에서 그것의 사용 사례에 대한 의존성 관리와 비슷한다.Net nuget 패키지지만,또한으로"프로젝트 구성처럼"일반 NetBeans/Intellij 프로젝트입니다.

그것은 더 나은 단순히 기존 NetBeans 프로젝트를 위한 나날이 발전?

1

최고의 응답

0

후 길고 지루한 과정의 시행 착오를 발견했는 솔루션은 나를 위해 노력하고 있습니다. 그래서 나는 결정을 공유하는 솔루션은 온라인 경우에는,다른 사람으로 실행할 경우 비슷한 문제가 발생합니다. 다음 링크를 사용하면 최종는 동작하는 예제 프로젝트=>파일 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 모듈)을 종속성입니다. 그것은 또한 CustommerRunnable pom.xml 으로 부모입니다. 따라서 실행할 때 프로젝트에서 NetBeans,연결된 모든 모듈도 작성(필요한 경우).

그것은 또한을 구성하 어셈블리 플러그인입니다. 어셈블리 플러그인은 첨부된 maven 패키지 상 따라서 실행됩니다. 그것은 또한 사용자 지정 어셈블리 기술자는 모두 복사 이전에 정의된 플러그인으로 오른쪽 폴더에 있습니다. 이것은 사용하여 수행 dependencySets 으로 포함 및 제외 패턴이 있습니다. 보 https://maven.apache.org/plugins/maven-assembly-plugin/advanced-descriptor-topics.html 에 대한 자세한 내용이다. 그래서 하나 dependencySet 사본에 모든 jar 파일의 모든 플러그인을/플러그인 폴더를 사용하여 포함한 패턴이다. 그런 다음 이 접근은 역 복사하는 jar 파일의 모든 외부에 종속성/lib 폴더에 있습니다.

설명도 정의 몇 가지 추가 파일을 복사하고 특정 위치에 있습니다. exec-maven plugin,할 수 있도록 편안하게 시작하는 고객의 소프트웨어 NetBeans. 지 않았어 아직 관리를 구성 실행할 플러그인에 대한 올바르게 필요한 클래스 경로를 인수입니다.

Endresult 다음과 같습니다: Assembly folder after building

그것은 또한 주목할 가치가 구성의 구축"프로젝트","프로젝트 실행"과"디버 프로젝트"내 NetBeans 해야의 작은 조금 수정할 수 있습니다. (오른쪽 클릭하 모듈은"배포"->"속성"->포인트"행위"

2021-11-25 17:07:28

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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