Maven 빌드 프로필은 자식 모듈 pom이 속성을 정의 할 때 실행됩니다.

망구 형제

특정 속성을 정의하는 모듈에 대한 공통 빌드 프로필을 갖고 싶습니다. 제 경우에는 jar-with-dependencies플러그인을 실행 중이며 모듈이 main.class속성을 정의 할 때만 실행되기를 바랍니다 .

부모 POM에 다음이 있습니다.

<profiles>
    <profile>
        <id>executable-jar</id>
        <activation>
            <property>
                <name>main.class</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>${main.class}</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id> <!-- this is used for inheritance merges -->
                            <phase>package</phase> <!--  bind to the packaging phase -->
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

-Dmain.classMaven 명령을 실행할 때 정의하지 않으면 빌드되지 않으므로 계산되는 모듈에서 속성을 감지하지 못하는 것처럼 보입니다. 이것이 트리거 될 수 있습니까?

투나 키

당신은 잘못된 방향으로 가고 있습니다. 프로파일은 이러한 방식으로 사용되지 않습니다 . 으로 활성화 된 프로필 <property>Maven 속성뿐만 아니라 시스템 속성 의 존재 (또는 부재)만을 대상으로 하기 때문에 구성이 작동하지 않습니다 . 이는 활성 프로필을 빌드 시작부터 바로 계산해야하는 반면 Maven 속성은 그 후에 설정해야하기 때문입니다 (빌드 중에 속성을 설정할 수도 있음).

여기서 정말로 원하는 maven-assembly-plugin것은 상위 POM 의 구성을 고려하는 것 입니다. 이를위한 Maven 방법은 다음과 같이 선언하는 것입니다 <pluginManagement>.

플러그인 관리에는이 특정 프로젝트 빌드에 대한 플러그인 정보를 구성하는 대신이 빌드에서 상속하는 프로젝트 빌드를 구성한다는 점을 제외하고는 거의 동일한 방식으로 플러그인 요소가 포함됩니다. 그러나 이것은 자식의 plugins 요소 내에서 실제로 참조되는 플러그인 만 구성합니다.

즉,에 대한 플러그인 관리를 구성 maven-assembly-plugin하고 해당 플러그인을 호출 할 프로젝트가이를 참조하도록 할 수 있습니다.

따라서 부모 POM에는 다음이 포함됩니다.

<pluginManagement>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.6</version>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <archive>
              <manifest>
                <mainClass>${main.class}</mainClass>
              </manifest>
            </archive>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</pluginManagement>

이것은에 대한 관리 섹션을 선언합니다 maven-assembly-plugin. 이를 모듈에서 사용하려면 하위 POM에 다음이 필요합니다.

<properties>
  <main.class>MyMainClass</main.class>
</properties>
<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
    </plugin>
  </plugins>
</build>

이는 모듈이 상위 POM의 관리 섹션을 참조 함을 선언합니다. 그리고 Maven main.class은이 경우 빌드 속성 올바르게 사용합니다 .

이 플러그인이 호출되지 않는 모듈의 경우의 플러그인 선언을 생략하면 maven-assembly-plugin아무 일도 일어나지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Maven은 모듈을 정의하려고 할 때 EJB를 프로젝트의 종속성으로 인식하지 않습니다.

Maven은 mvn 의존성을 실행할 때 형제 모듈을 인식하지 못합니다 :

has_one 자식 모델을 자동으로 빌드 할 때 속성 설정

다중 모듈 프로젝트 속성 확장의 Maven 빌드 프로필

Maven에서 모듈을 빌드 할 때 종속 프로젝트를 빌드하는 방법

부모 모듈로 자식 모듈의 maven 빌드를 만드는 방법은 무엇입니까?

특정 종속성이 있을 때 maven 빌드가 어떻게 실패할 수 있습니까?

Maven 다중 모듈 프로젝트에서 둘 이상의 모듈에 필요한 종속성을 지정하는 방법은 무엇입니까?

Maven : 한 자식 모듈에서 다른 자식 모듈로의 종속성을 관리하는 방법

Ubuntu 18.04 / 20.04에서 사용자 정의 커널을 빌드할 때 비정상적으로 큰 드라이버/모듈 디렉토리

커널 모듈을 빌드 할 때 포함 경로 설정

모듈을 수정하는 방법은 하나 이상의 Android 라이브러리에 따라 다르지만 Cordova 앱을 빌드 할 때 Jar입니다.

Maven 다중 모듈 프로젝트의 부모 모듈 내의 config 폴더에서 Spring-Boot 속성을로드 할 수 있습니까?

시뮬레이터 용으로 빌드 할 때 "모듈 재정의 ..."

프로그래밍 방식으로 여러 파일의 이름을 바꾸려고하는데 코드를 실행할 때 지정된 폴더의 모든 파일이 삭제됩니다.

빌드시 프로필을 사용하여 속성 파일을 채울 때 Eclipse에서 Maven 웹앱을 어떻게 실행할 수 있습니까?

동일한 다중 모듈 프로젝트 내에서 빌드 된 버전으로 Gradle 모듈의 종속성을 재정의 할 수 있나요?

Android 용 Meteor Build : TypeError : 프로덕션 빌드 서버를 실행할 때 null 오류의 속성 '슬라이스'를 읽을 수 없습니다.

명령 줄의 Maven 재정의 속성은 자식 모듈 상호 참조에 대해 수행합니다.

Docker에서 Maven 프로젝트를 빌드 할 때 모든 대상 파일이 루팅됩니다.

Maven에서 하위 모듈을 다시 빌드 할 때 배포 모듈을 트리거하는 방법은 무엇입니까?

Maven Java 프로젝트에서 종속 모듈을 빌드하기 위해 pom 파일과 TeamCity를 구성하는 방법은 무엇입니까?

FUN (X [[i]], ...) 오류 : 완전 채식에서 MDS를 실행할 때 모든 숫자 변수가있는 데이터 프레임에서만 정의됩니다.

`cabal v2-install`로 실행 파일을 빌드할 때 모든 종속성 고정

사용자 정의 TypeScript 정의 파일을 작성할 때 "모듈 '이름'이 유형이 지정되지 않은 모듈로 해석됩니다 ..."오류가 발생 함

Android 앱 번들을 빌드할 때 '주문형 모듈의 제목이 누락됨'을 수정하는 방법은 무엇입니까?

사용자 지정 Puppet 모듈을 별도의 환경으로 이동했지만 이제 종속성을로드 할 수 없습니다.

보기에서 데이터를 게시 할 때 편집기 필드가있는 속성을 제외하고 모든 속성이 null로 설정됩니다.

Maven 다중 모듈 프로젝트에서 전체 빌드를 실행하고 한 자식에서 특정 플러그인을 실행하려면 어떻게해야합니까?

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관