14

Maven là 3.1.0.Plugin phiên bản Maven-plugin Maven 2.2

Tôi đang sử dụng plugin-maven-plugin: 2.2 trong tệp pom.xml của dự án của tôi (như được hiển thị bên dưới). Ngoài cấu hình tập tin pom.xml thường lệ, tôi chỉ hiển thị ảnh chụp mã chính dưới đây:

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

    <artifactId>tools-parent</artifactId> 
    <version>0.0.7-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <description> 
     Infrastructure related to the &quot;vapp&quot; and 
     &quot;deployer&quot; utilities. 
    </description> 

    <parent> 
     <groupId>com.company.product</groupId> 
     <artifactId>deploy-parent</artifactId> 
     <version>0.0.6-SNAPSHOT</version> 
    </parent> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-scm-plugin</artifactId> 
       <version>1.9.4</version> 
       <configuration> 
        <connectionType>connection</connectionType> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>versions-maven-plugin</artifactId> 
       <version>2.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-enforcer-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <!-- Make sure that only non-snapshot versions are used for the dependencies. Only active when property 'snapshotDependencyAllowed' is false. --> 
         <id>enforce-no-snapshots</id> 
         <goals> 
          <goal>enforce</goal> 
         </goals> 
         <configuration> 
          <skip>${snapshotDependencyAllowed}</skip> 
          <rules> 
           <requireReleaseDeps> 
            <message>No Snapshots Allowed!</message> 
           </requireReleaseDeps> 
           <requireReleaseVersion> 
            <message>No Snapshots Allowed!</message> 
           </requireReleaseVersion> 
          </rules> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Bây giờ, khi tôi chạy: mvn clean install, nó được xây dựng thành công.

LƯU Ý: Trong dự án của tôi, tôi có phần cha, nơi tôi phụ thuộc vào tạo tác cha mẹ triển khai có id nhóm "com.company.product" là id nhóm tôi muốn công cụ-cha mẹ tạo tác (có pom.xml tôi đã dán ở trên) nhưng triển khai-cha mẹ là một tạo tác của kho/dự án khác.

Khi tôi chạy: phiên bản mvn: set -DnewVersion = 0.0.7, tôi nhận được thông báo lỗi sau.

[INFO] ------------------------------------------------------------------------ 
[INFO] Building tools-parent 0.0.7-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- versions-maven-plugin:2.2:set (default-cli) @ tools-parent --- 
[INFO] Searching for local aggregator root... 
[INFO] Local aggregation root: /user/home/u100123/giga/tools 
[INFO] Processing change of com.company.product:tools-parent:0.0.7-SNAPSHOT -> 0.0.7 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] tools-parent .................................... FAILURE [1.093s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.404s 
[INFO] Finished at: Fri May 01 20:44:22 GMT-00:00 2015 
[INFO] Final Memory: 12M/246M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.2:set (default-cli) on project tools-parent: Execution default-cli of goal org.codehaus.mojo:versions-maven-plugin:2.2:set failed. NullPointerException -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 

BÂY GIỜ, khi tôi thay đổi phiên bản phiên bản-maven-plugin trở lại 2.1 (mà những gì tôi đã sử dụng trước đó), trên các phiên bản mvn: set -DnewVersion = 0.0.7 lệnh đang làm việc thành công và Tệp pom.xml được thay đổi thành công thành <version>0.0.7</version> để tạo thành công cụ gốc.

Với phiên bản 2.2, nó cho tôi lỗi và không thay đổi phiên bản thành 0.0.7.

  1. Bất kỳ lý do nào khiến lỗi 2.2 không thành công? Có thể làm gì để giải quyết nó?
+0

Điều quan trọng nhất ở đây là thông báo chính thức chưa được đưa ra ... – khmarbaise

+0

Hm .. cảm ơn bạn đã chia sẻ. –

Trả lời

23

Dường như một số lỗi.

Giải pháp:

. Tôi phải thêm <groupId>com.company.product</groupId> thuộc tính bên ngoài ... phần cũng như tức là đối với công cụ mẹ, NOW-maven-plugin: 2.2 hoạt động tốt tức là tôi đã thêm dòng trên cùng (như được hiển thị bên dưới). Điều duy nhất là, việc sử dụng phần cha là gì (ngoài việc kế thừa mã chính của những gì triển khai-cha mẹ là brining đến các công cụ-cha mẹ dự án). Tại sao groupId cần phải được xác định đầu ra của phần cha mẹ cho các công cụ artifactId-parent khi nó đã có trong phần cha mẹ cho các phiên bản-maven-plugin: 2.2 để hoạt động thành công.

Điều quan trọng nhất là: Vấn đề này chỉ xảy ra trong trường hợp pom.xml của bạn cho một dự án/mô-đun có một phần <parent> nơi artifactId phần của cha mẹ không phải là cha mẹ của bản thân dự án (một tình huống chú Maven ) tức là nếu công cụ-phụ huynh tạo tác được định nghĩa trong phần cha của mô-đun khác (cho phép nói công cụ-con) thì phiên bản 2.2 sẽ hoạt động thành công.Nhưng nếu phần tử công cụ-con không chứa artifactId là "công cụ-cha mẹ" và là cái gì khác cho ví dụ: triển khai-parent/some-different-project-artifact (nằm trong một dự án khác trong công cụ kiểm soát nguồn của bạn) sau đó, cho artifactId công cụ của trẻ em, chúng ta cần groupId giá trị cũng đặt bên ngoài của bộ phận cha mẹ cũng như (thậm chí nếu groupId của mẹ artifactId phần là giống/khác nhau để nhân công cụ con groupId).

<groupId>com.company.product</groupId> 
<artifactId>tools-parent</artifactId> 
<version>0.0.7-SNAPSHOT</version> 
<packaging>pom</packaging> 

<description> 
    Infrastructure related to the &quot;vapp&quot; and 
    &quot;deployer&quot; utilities. 
</description> 

<parent> 
    <groupId>com.company.product</groupId> 
    <artifactId>deploy-parent</artifactId> 
    <version>0.0.6-SNAPSHOT</version> 
</parent> 

- HOẶC

. Chuyển về phiên bản-maven-plugin: 2,1

+0

Chúng tôi đã chuyển về phiên bản 2.1 và hoạt động tốt, giống như trước đây ... – BlackEye

14

Chỉ cần để thêm vào phần 2 của câu trả lời Arun của, cách sử dụng phiên bản 2.1 của plugin là:

mvn org.codehaus.mojo:versions-maven-plugin:2.1:set org.codehaus.mojo:versions-maven-plugin:2.1:commit -DnewVersion=0.0.7 

Bạn phải chỉ định id nhóm và id tạo tác đầy đủ.

+1

THANKS A LOT !!!! – t0r0X

+0

Làm việc như một sự quyến rũ và không cần bất kỳ sự thay đổi nào trong pom. Cảm ơn vì điều này – PierreF

1

tôi chạy vào một NPE quá nhưng nó quay ra lý do là một mật khẩu khác với suggested earlier. Tôi đã sửa lỗi trình cắm thêm maven-plugin và phát hiện ra rằng NPE được gây ra bởi một tuyên bố thiếu <version> về sự phụ thuộc trong danh sách trong số <dependencyManagement>. Điều này có thể được sao chép với danh sách sau:

<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>npe</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>NPE Example</name> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-context</artifactId> 
       <!-- missing <version>4.2.0.RELEASE</version> --> 
       <scope>runtime</scope> 
       <exclusions> 
        <exclusion> 
         <groupId>commons-logging</groupId> 
         <artifactId>commons-logging</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.2.0.RELEASE</version> 
     </dependency> 
    </dependencies> 
</project> 
Các vấn đề liên quan