2016-09-19 2 views
0

SCM (이 경우 svn)에서 검색 한 개정 번호를 기반으로 빌드 번호를 내 EAR의 MANIFEST.MF에 넣으려고합니다. . 중첩 된 프로젝트가있는 maven 상위 프로젝트가 있으며, 그 중 하나는 EAR을 생성합니다.MANIFEST.MF의 buildNumber가 buildnumber-maven-plugin 및 svn과 함께 생성되지 않음

이 내 부모의 pom.xml입니다 :

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

    <groupId>com.example</groupId> 
    <artifactId>app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <properties> 
     <sourceVersion>1.8</sourceVersion> 
     <targetVersion>1.8</targetVersion> 
    </properties> 
    <scm> 
     <connection>scm:svn:svn://[email protected]/example/branches/tryRevision</connection> 
    </scm> 
    <modules> 
     ... 
     <module>app-ear</module> 
    </modules> 

    <build> 
     <!-- plugins used by this POM and all inheriting POMs --> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>buildnumber-maven-plugin</artifactId> 
        <version>1.4</version> 
        <executions> 
         <execution> 
          <phase>validate</phase> 
          <goals> 
           <goal>create</goal> 
          </goals> 
         </execution> 
        </executions> 
        <configuration> 
         <doCheck>false</doCheck> 
         <doUpdate>false</doUpdate> 
         <revisionOnScmFailure>no-revision</revisionOnScmFailure> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-scm-plugin</artifactId> 
        <version>1.9.5</version> 
        <configuration> 
         <connectionType>connection</connectionType> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</project> 

이 앱 귀/pom.xml 파일입니다 :

<?xml version="1.0"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <parent> 
     <groupId>com.example</groupId> 
     <artifactId>app</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>app-ear</artifactId> 
    <packaging>ear</packaging> 
    <build> 
     <finalName>${project.artifactId}-${project.version}</finalName> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.5.1</version> 
        <configuration> 
         <source>${sourceVersion}</source> 
         <target>${targetVersion}</target> 
         <verbose>true</verbose> 
         <fork>true</fork> 
         <executable>${compilerLocation}</executable> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>buildnumber-maven-plugin</artifactId> 
        <version>1.4</version> 
        <executions> 
         <execution> 
          <phase>validate</phase> 
          <goals> 
           <goal>create</goal> 
          </goals> 
         </execution> 
        </executions> 
        <configuration> 
         <doCheck>false</doCheck> 
         <doUpdate>false</doUpdate> 
         <revisionOnScmFailure>no-revision</revisionOnScmFailure> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-ear-plugin</artifactId> 
        <version>2.10.1</version> 
        <configuration> 
         <skinnyWars>true</skinnyWars> 
         <finalName>myapp</finalName> 
         <version>7</version> 
         <defaultLibBundleDir>lib</defaultLibBundleDir> 
         <archive> 
          <manifestEntries> 
           <SCM-Revision>${buildNumber}</SCM-Revision> 
          </manifestEntries> 
         </archive> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

    <dependencies> 
     ... 
    </dependencies> 
</project> 

내가 MVN 깨끗한 패키지 프로젝트를 빌드하고 내부보고 귀 META-INF/MANIFEST.MF 나는이 얻을 :

Manifest-Version: 1.0 
SCM-Revision: 
Archiver-Version: Plexus Archiver 
Built-By: me 
Created-By: Apache Maven 3.3.9 
Build-Jdk: 1.8.0_102 

당신이 볼 수 있듯이, buildnumber-받는다는-P에서 buildNumber 속성 루긴은 비어 있습니다. 제안 사항이 있으십니까?

+0

buildnumber-maven-plugin을 실행해야하지만 pluginManagement에서만 정의했습니다. 따라서 라이프 사이클에 대한 바인딩이 발생하지 않았습니다. – khmarbaise

+0

build-number-maven-plugin을 포함하여 app-ear/pom.xml을 변경했습니다. MANIFEST.MF에서 아무 것도 변하지 않았습니다. – chess4ever

+0

예제 프로젝트를 github에 두어 볼 수 있습니다 ... – khmarbaise

답변

0

외부에 별도의 <plugins> tag </plugins>을 만들고 여기에 buildnumber maven 플러그인을 별도로 넣으십시오. 그게 내게 해준 것입니다. 이유를 묻지 마십시오.