2012-05-11 48 views
40

Tôi vừa bắt đầu sử dụng Maven và tôi đọc các plugin đó là các thành phần bổ sung có thể được sử dụng.
Một cấu trúc đặc trưng của pom.xml tập tin làPlugin trong Maven và POM.xml

<project> 
    <groupId>org.koshik.javabrains</groupId> 
    <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>JarName</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 

Câu hỏi: Tôi nên chèn một thẻ plugin ở đâu? chẳng hạn như sau:

<plugin> 
    <groupId>org.jibx</groupId> 
    <artifactId>jibx-maven-plugin</artifactId> 
    <version>1.2.4</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>bind</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Trước khi phụ thuộc hoặc sau thẻ dependency? Nó có quan trọng không?

Trả lời

40
<project> 
    <groupId>org.koshik.javabrains</groupId> 
    <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>JarName</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.jibx</groupId> 
       <artifactId>jibx-maven-plugin</artifactId> 
       <version>1.2.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>bind</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

Bạn cũng có thể đặt các plugin trong phần <build> của <profile> nếu bạn sử dụng hồ sơ maven. Thứ tự không quan trọng.

+0

Tăng bạn rất nhiều. –

2

Bạn có thể chèn đoạn mã thứ hai của mình vào bất kỳ đâu trong tệp pom.xml giữa hai thẻ <plugins></plugins>.

4

<plugin> nên được đặt vào <plugins> phần sẽ được đặt vào mục <build> hoặc <pluginManagement>. Thứ tự của <dependency> hoặc <build> phần không quan trọng.

Các tài liệu tham khảo đầy đủ về pom.xml là ở đây: http://maven.apache.org/pom.html

3

Nếu bạn muốn sử dụng plugin cho tòa nhà, bạn có thể sử dụng các cấu trúc bên dưới.

<project> 
<build> 
    <plugins> 
    </plugins> 
</build> 
</project> 
+0

Được rồi. Ý bạn là để thêm thẻ plugin vào tệp ở trên, tôi chỉ cần thêm .. và không cần thêm thẻ vì thẻ đã có mặt ở trên cùng. Tôi có đúng không? – Rajeshwar

+0

Có, bạn không cần thêm lại dự án. Tôi chỉ đưa ra cấu trúc hoàn chỉnh. –

2

Thứ tự các mục trong POM không quan trọng. Nói chung, có các plugin bổ sung và báo cáo trong Maven. Trường hợp của bạn là sử dụng plugin xây dựng để bạn phải đặt khối <plugin> này vào mục <project><build><plugins>....

Nhìn vào this để biết một số khái niệm cơ bản về plugin.

5

Một làm rõ vào cuối ngày hai điểm quan trọng

Nơi để đặt plugin
Một plugin thực sự nên được bổ sung trong hầu hết các trường hợp trong phần build/plugins, tuy nhiên có một sự khác biệt quan trọng giữa việc đặt trong phạm vi plugins khi đặt nó trong phạm vi pluginManagement/plugins.

sự hiểu lầm này là thường nguyên nhân của một plugin không viện dẫn trong Maven hoặc xử lý sự cố khó khăn hơn:

  • Plugins dưới build/plugins là trực tiếp một phần của Maven mặc định xây dựng, nếu họ xác định một execution hoặc nếu họ cấu hình một cái gì đó cho việc xây dựng mặc định (xem dưới đây)
  • Plugins dưới build/pluginManagement/plugins không necessarely phần của Maven mặc định xây dựng, có nghĩa là, i s quản lý, đó là một gợi ý để maven: nó bạn xảy ra để sử dụng plugin này, sau đó xin vui lòng sử dụng phiên bản, cấu hình, các hành quyết tôi chỉ định ở đây, trong quản lý này.

    Nhưng điều gì xảy ra khi sử dụng có nghĩa là gì? Có nghĩa là: nếu cùng một plugin là cũng có trong phần build/plugins, sau đó áp dụng quản lý này (và chỉ khi đó nó sẽ có hiệu lực); hoặc nếu plugin được Maven gọi mặc định, sau đó cũng áp dụng nó.

    Nhưng plugin được gọi theo mặc định như thế nào? Đó là một phần của triết lý chính đằng sau maven: quy ước về cấu hình. Theo quy ước, khi bạn chỉ định một số packaging nhất định (mặc định là jar, nhưng có thể là war chẳng hạn), bạn muốn một số plugin nhất định được gọi. Để tạo một jar, by default hãy gọi số maven-jar-plugin; để tạo một war, by default gọi số maven-war-plugin và cứ tiếp tục như vậy. Vì vậy, nếu bạn chỉ định cấu hình plugin trong số build/pluginManagement/plugin cho plugin có liên kết mặc định với bản dựng Maven, thì nó cũng sẽ được sử dụng.

đặt hàng
Liên quan đến việc đặt hàng các bộ phận bên trong file pom.xml, làm rõ thêm là cần thiết: đó là thực sự không thích hợp trong hầu hết các trường hợp, tuy nhiên thứ tự của plugin yếu tố wihtin các build/plugins phần có thể là quan trọng. Kể từ Maven 3.0.3 (MNG-2258), các thực thi plugin khác nhau được đính kèm vào cùng một giai đoạn Maven sẽ được gọi theo thứ tự khai báo trong tệp pom.xml. Tức là, thứ tự quan trọng là trong trường hợp này, vì nó có thể ảnh hưởng đến hành vi của bản dựng.

Ngoài ra, thứ tự của các tuyên bố dependency có thể ảnh hưởng đến tòa nhà của bạn theo hướng Dependency Mediation, tức là phụ thuộc khai báo đầu tiên sẽ thắng trong trường hợp xung đột với phụ thuộc chuyển tiếp. Vì vậy, một lần nữa, đặt hàng là quan trọng trong một số trường hợp nhất định.

Cuối cùng nhưng không kém, mặc dù đặt hàng là không quan trọng đối với các phần khác của tập tin pom.xml, thói quen tốt là làm theo chính thức Maven recommendations và, như một phiên bản đơn giản, hãy làm theo thứ tự này kê khai:

<project> 
    <modelVersion/> 

    <parent/> 

    <groupId/> 
    <artifactId/> 
    <version/> 
    <packaging/> 

    <properties/> 

    <dependencyManagement/> 
    <dependencies/> 

    <build/> 

    <reporting/> 

    <profiles/> 
</project> 

Các sortpom-maven-plugin cũng có thể được sử dụng để tự động áp dụng đặt hàng tiêu chuẩn này, chỉ cần gọi sau đây trên các lo ngại pom.xml file:

mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \ 
    -Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06 

Để đọc thêm:

Các vấn đề liên quan