2012-03-27 35 views
6

我有一個超級POM收集版本,插件&它的兩個子子模塊的依賴關係定義:一個用於webapp(使用jetty:run運行),另一個用於DB遷移(「運行「與liquibase:更新)。Maven - 委託插件執行到子模塊

只要將目錄更改爲其中一個子模塊,就可以正常工作。 但是,當我在父POM上運行jetty:run或liquibase:update時,我希望看到插件執行「轉發」到相應的子模塊。

你有什麼想法可以實現這樣的事情嗎?

由於提前,

羅爾夫

P.S:對不起,我遲到更新

父POM

<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> 
    <modules> 
      <module>webapp</module> 
      <module>db-migrations</module> 
    </modules> 

    <!-- [...] --> 

    <pluginManagement> 
      <!-- [...] --> 
      <plugins> 
        <!-- JETTY --> 
        <plugin> 
          <groupId>org.mortbay.jetty</groupId> 
          <artifactId>maven-jetty-plugin</artifactId> 
          <version>${jetty-plugin.version}</version> 
          <configuration> 
            <contextPath>/</contextPath> 
            <scanIntervalSeconds>10</scanIntervalSeconds> 
            <connectors> 
              <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
                <port>9999</port> 
                <maxIdleTime>60000</maxIdleTime> 
              </connector> 
            </connectors> 
          </configuration> 
        </plugin> 
        <!-- LIQUIBASE --> 
        <plugin> 
          <groupId>org.liquibase</groupId> 
          <artifactId>liquibase-maven-plugin</artifactId> 
          <version>${liquibase.version}</version> 
          <configuration> 
            <changeLogFile>src/main/resources/tv/esporx/master.xml</changeLogFile> 
            <propertyFile>${env.file}</propertyFile> 
          </configuration> 
          <executions> 
            <execution> 
              <phase>process-resources</phase> 
              <goals> 
                <goal>updateSQL</goal> 
                <goal>update</goal> 
              </goals> 
            </execution> 
          </executions> 
        </plugin> 
    </pluginManagement> 
</project> 

DB MIGRATIONS

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

    <!-- [...] --> 

    <dependencies> 
      <dependency> 
        <groupId>mysql</groupId> 
        <artifactId>mysql-connector-java</artifactId> 
      </dependency> 
    </dependencies> 

    <build> 
      <plugins> 
        <plugin> 
          <groupId>org.liquibase</groupId> 
          <artifactId>liquibase-maven-plugin</artifactId> 
        </plugin> 
      </plugins> 
    </build> 
</project> 

WEBAPP

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

    <!-- [...] --> 

    <build> 
      <plugins> 
        <plugin> 
          <groupId>org.mortbay.jetty</groupId> 
          <artifactId>maven-jetty-plugin</artifactId> 
        </plugin> 
      </plugins> 
    </build> 
</project> 
+0

你能分享到相關的pom片段嗎?例如,你在你的父pom中使用''? – Raghuram 2012-03-28 04:58:22

+0

你能展示一下嗎?否則無法提供任何建議。 – khmarbaise 2012-03-28 14:53:43

+0

完成了,對不起,我遲到的回覆。正如你所看到的,一切都已經收集在父pom文件中。但是,這兩個插件僅在子級別上有效使用。 最好是告訴Maven mvn liquibase:update(或updateSQL)以及mvn jetty:在父級上運行以將調用轉發給適當的子項目。 – Rolf 2012-03-31 02:53:24

回答

6

如果你做了一個MVN之前其他步驟安裝就可以使用

mvn -pl ChildModule lifecycle 

從項目的根目錄。