2011-10-31 15 views
0

我有兩個Maven化項目如何添加Maven化項目的參考

  1. Project_A:Java項目
  2. Project_B:Java的Web項目

早些時候,mavenizing這兩個項目之前,我有refrence( Project_B中的Project_A的構建路徑)。 現在我已經用maven2配置了兩個項目。我的問題是,我怎麼能添加Project_A的refrence在Project_B該Project_B的WAR可以運行的

到目前爲止,我已經嘗試下面的代碼塊,這似乎工作,但在運行時Project_B的WAR引發異常的applicationContext,一個Project_A類的實例無法啓動。

1- Project_A清洗和安裝在本地倉庫名稱爲 「MyProject的-1.0.jar」 其中構建片段(Project_A的POM)如下#

編輯部分

<modelVersion>4.0.0</modelVersion> 
    <groupId>org.myurl<groupId> 
<artifactId>projectA</artifactId> 
<version>1.0</version> 
<packaging>jar</packaging> 
<name>${project.artifactId}-${project.version}</name> 




build> 
     <sourceDirectory>${basedir}/src/main/java</sourceDirectory> 
     <outputDirectory>${basedir}/target/classes</outputDirectory> 
     <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory> 
     <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory> 
     <resources> 
      <resource> 
       <directory>${basedir}/src/main/resources</directory> 
      </resource> 
     </resources> 
     <testResources> 
      <testResource> 
       <directory>${basedir}/src/test/resources</directory> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <optimize>true</optimize> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
  1. Project_B的POM的片段,其中我添加了Project_A的已安裝的jar

      <dependency> 
        <groupId>org.myurl</groupId> 
        <artifactId>projectA</artifactId> 
        <version>1.0</version> 
        <scope>compile</scope> 
    </dependency> 
    

感謝您提前提出建議。

回答: 實際上,maven沒有任何問題。以上POM中的配置是絕對正確的。我在/ Resources下移動了屬性文件,後來我忘記了在屬性文件被使用的類別中更改路徑。

不過,我很感謝海豚和尼古拉Musatti他們的建議。

+0

聽起來好像問題是,項目A中的類不包括在生成的項目B戰爭?他們? – PapaFreud

+0

如果我瀏覽部署JBoss服務器的文件夾中,我可以很容易地找到PRoject_B的的webapp – Rehman

回答

0

你很好,pom片段很好,你現在需要做的就是製作父項目(Maven Reactor)。因此,您將製作新項目並在該項目中定義模塊(項目A和項目B)。您將在項目A和項目B中引用該父項,並且這將實現該技巧。谷歌母公司父母,看看它是如何完成的。

建設項目B之後,Maven將先建一個項目,之後項目B.

事情是你的方法應該工作,以及(只是它不是做一個適當的方式)。所以可能你在groupId版本中犯了錯誤。你可以通過構建Project A來檢查它,然後檢查你的本地Maven倉庫。如果沒有出錯,你應該看到文件夾結構。

org/myurl/projectA-1.0。罐子

項目strucuture是以下幾點:

項目父 項目一 項目-B

項目父

定義:

<groupId>foo.bar</groupId> 
<artifactId>project-parent</artifactId> 
<version>00.01-SNAPSHOT</version> 
<name>FooBar:: Parent Project</name> 
<packaging>pom</packaging> 

<modules> 
    <module>../project-a</module> 
    <module>../project-b</module> 
</modules> 

在項目和項目-B您添加:

<parent> 
    <groupId>foo.bar</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>00.01-SNAPSHOT</version> 
</parent> 

In proje ct-b您將參考項目-a

<dependency> 
     <groupId>foo.bar</groupId> 
     <artifactId>project-a</artifactId> 
     <version>00.01-SNAPSHOT</version> 
    </dependency> 

一旦您構建父級,它應該正確構建所有模塊。不要使用插件,忘記我說的Maven反應堆:)

+0

的Project_A WEB_INF的所有生成的類我已經編輯Project_A的POM,並在我的本地倉庫,我可以看到了projectA-1.0.jar片斷 – Rehman

+0

我用Google搜索,但無法挑選我如何使用它。到目前爲止,我試圖把 \t \t \t \t 行家 \t \t \t \t 行家-反應器插件 \t \t \t \t 1.0 \t \t \t。之後,我試圖做mvn安裝,但仍然戰爭不能正常運行。而且,我正在使用myeclipse。進一步的援助將不勝感激 – Rehman

+0

好的,我會在我的答案中添加例子。 –

相關問題