2014-12-26 155 views
0

我正在計劃一個多模塊maven項目。多模塊項目和maven中心

父POM定義了兩個模塊,A和B

  • 模塊A需要從命令行示出了AWT的JDialog可執行文件。
  • 模塊B將是一個正常的罐,其12-奇數依賴由客戶端下載(即,不是打包)
  • 模塊B需要依賴於模塊A.
  • 想及時罐子儘可能小爲分佈在Maven Central上。

我的問題:
1.多模塊maven項目是否是實現這些目標的正確途徑?
2.這兩個模塊是否需要分別發佈到maven central?

+0

我不明白的是你的模塊b客戶端下載的依賴關係?您的AWT JDialog的最終用戶?你應該爲用戶創建準備好的工件,就像一個zip壓縮包一樣,可以下載解壓縮並運行它... – khmarbaise

+0

模塊A包含的方法不僅需要從AWT表單(用於編寫許可證文件)調用,而且當它正在執行時,也從模塊B中執行。 –

回答

1

這看起來像是多模塊構建的典型場景。

. 
├── mod-a 
│   └── pom.xml 
├── mod-b 
│ └── pom.xml 
└── pom.xml (parent) 

父只包含模塊列表(二)它是這樣的相似:

<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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>com.soebes.smpp</groupId> 
    <artifactId>smpp</artifactId> 
    <version>0.7.1</version> 
    </parent> 

    <groupId>com.soebes.training.first</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <name>Project : Parent</name> 

    <scm> 
    Define the SCM information here... 
    </scm> 

    <modules> 
    <module>mod-a</module> 
    <module>mod-b</module> 
    </modules> 

</project> 

每個孩子都應該是這樣的相似:

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

    <parent> 
    <groupId>com.soebes.training.first</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    </parent> 

    <name>Project : Mod-A</name> 
    <artifactId>mod-a</artifactId> 

</project> 

你MODULE- b應該看起來像這樣:

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

    <parent> 
    <groupId>com.soebes.training.first</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    </parent> 

    <name>Project : Mod-B</name> 
    <artifactId>mod-b</artifactId> 

    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>mod-a</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
    </dependencies> 

</project> 

現在你可以從父模塊構建,所有這些應該被部署到中央,並且沒有必要單獨做這個事情,你可以從父母那裏做到這一點...

+0

我已經創建了包含2個模塊的多項目項目,正如我在原始問題中所述。編譯和構建。尺寸要小得多。模塊AWT表單啓動。我的後續問題是:1.模塊A中的方法是否能夠在必須從客戶端項目的模塊B中調用的情況下成功運行? 2.客戶是依賴於這兩個模塊還是僅依賴於父項? –