2009-09-08 25 views
8

Trong dự án hiện tại của tôi, chúng tôi sử dụng một số plugin cần thiết bởi các tham số plugin khác như plugin-maven-plugin hoặc plugin buildnumber.Cách liên kết mục tiêu plugin với mục tiêu plugin khác

<?xml version="1.0"?> 
<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>mygroup</groupId> 
    <artifactId>myartifact</artifactId> 
    <packaging>pom</packaging> 
    <version>v0</version> 
    <name>myProject</name> 

    <properties> 
      <env>dev</env> 
    </properties> 

    <build> 
     <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <configuration> 
      <files> 
       <file>${basedir}/configurations/${env}.properties</file> 
      </files> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>initialize</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>buildnumber-maven-plugin</artifactId> 
      <version>1.0-beta-3</version> 
      <executions> 
       <execution> 
        <phase>initialize</phase> 
        <goals> 
         <goal>create</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>com.wakaleo.schemaspy</groupId> 
      <artifactId>maven-schemaspy-plugin</artifactId> 
      <version>1.0</version> 
      <configuration> 
       <databaseType>mysql</databaseType> 
       <database>${database.schema}</database> 
       <host>${database.host}</host> 
       <user>${database.user}</user> 
       <password>${database.pwd}</password> 
       </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Vấn đề là khi bạn thực hiện trực tiếp mục tiêu plugin, mục tiêu được ràng buộc trên giai đoạn khởi tạo (hoặc xác thực) sẽ không được thực hiện. Vì vậy, để tạo ra sơ đồ gián điệp chúng ta cần phải gõ:

$> mvn org.codehaus.mojo:properties-maven-plugin:read-project-properties schemaspy:schemaspy 

Chúng tôi muốn nói với rằng tài sản của plug-in và buildNumber Plugin cần phải được thực hiện cho mỗi lệnh maven vì vậy chúng tôi có thể gõ:

$> mvn schemaspy:schemaspy 

Có cách sạch sẽ để làm điều đó (không có kịch bản)?

Trả lời

6

Cách đơn giản nhất sẽ là để ràng buộc mục tiêu schemaspy sang một giai đoạn vòng đời (đặc biệt là khi bạn đã làm điều này ffor hai plugin khác), như vậy thì bạn chỉ có thể chạy một cái gì đó giống như mvn gói và có tất cả ba plugins được thực hiện trong các giai đoạn thích hợp.

Nếu bạn muốn plugin schmespy chỉ được thực hiện trong các trường hợp nhất định, hãy đặt nó trong cấu hình, sau đó chạy gói mvn -P schemaspy để kích hoạt nó. Cấu hình để đạt được điều này trông giống như sau:

<profiles> 
    <profile> 
    <id>schemaspy</id> 
    <plugin> 
     <groupId>com.wakaleo.schemaspy</groupId> 
     <artifactId>maven-schemaspy-plugin</artifactId> 
     <version>1.0</version> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>schemaspy</goal> 
      </goals> 
     </execution> 
     </executions> 
     <configuration> 
     <databaseType>mysql</databaseType> 
     <database>${database.schema}</database> 
     <host>${database.host}</host> 
     <user>${database.user}</user> 
     <password>${database.pwd}</password> 
     </configuration> 
    </plugin> 
    </profile> 
</profile> 
+0

Không bao giờ nghĩ về điều đó. Tôi thích nó. Cảm ơn. – noirbizarre

+3

Xin lỗi, nhưng điều này không giúp tôi. Chúng ta có thể ràng buộc một mục tiêu vào một mục tiêu khác không? Tôi cần tính toán tên chi nhánh bằng cách sử dụng plugin trong ngữ cảnh phân nhánh cho bản phát hành. Nó sẽ là lạ để yêu cầu các nhà phát triển để kích hoạt một hồ sơ và chạy một giai đoạn vòng đời để tạo ra một chi nhánh, khi họ bình thường sẽ chỉ cần chạy 'phát hành: chi nhánh' ... –

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