2012-06-28 97 views
1

我們有2個Maven應用程序,一個包含我們的jsps和表示層代碼的戰爭應用程序,以及一個包含我們業務層代碼的共享庫。Maven + Netbeans調試WAR應用程序

在遷移到maven之前,我們將共享庫作爲WAR應用程序的項目引用。無論何時我們在Netbeans中構建或調試WAR應用程序時,共享庫都會自動編譯和構建,並自動獲取任何新的更改。

使用Maven,它看起來像我們隨時對共享庫進行更改,現在我們需要在調試之前構建共享庫項目。有什麼方法可以保留舊方法的效率?

當我們調試WAR應用程序時,是否有任何方法讓Maven在我們調試時自動構建共享庫依賴項(本地jar項目)?

回答

0

好吧,我終於完成了這一使用maven的調用插件:

<plugin> 
<artifactId>maven-invoker-plugin</artifactId> 
<version>1.6</version> 
<configuration> 
    <projectsDirectory>../</projectsDirectory> 
    <pomIncludes> 
     <pomInclude>project1/pom.xml</pomInclude> 
     <pomInclude>project2/pom.xml</pomInclude> 
    </pomIncludes> 
    <goals> 
     <goal>install</goal> 
    </goals> 
</configuration> 
<executions> 
    <execution> 
     <id>build-deps</id> 
     <goals> 
      <goal>install</goal> 
     </goals> 
    </execution> 
</executions> 

我高度懷疑這是最好的做法,但它得到了這份工作完成。您可以將其安裝到自己的配置文件中,以確保它不會影響自動化建築。

0

在eclipse中它只是自動構建/ hot deploy設置正確的問題。只要確保安裝了maven插件並將其用作項目的構建器即可。

我不認爲netbeans有很大的不同。

+0

對jsps的更改正在接受,沒有問題。 Netbeans需要做的是在WAR應用程序的構建觸發時觸發共享庫的構建。 –

+0

爲什麼?它沒有改變,所以爲什麼要麻煩?如果它已更改但未更新,則您的構建路徑不正確。 – NimChimpsky

+0

例如,如果我將共享庫中的方法簽名從getWidget()更改爲getWidgetOne(),WAR文件中的jsp將不會選取它,除非我構建共享庫,然後調試WAR項目。我需要戰爭項目來自動打包共享庫的jar文件。 –

0

,我已經圍繞這個工作的方法是有一個封裝了所有子組件的父POM:

myProject 
+- myProject-web 
+- myProject-bl 
+- myProject-da 
\- myProject-domain 

每一個單獨的項目,建立到它自己的Maven的依賴。然後,在父POM簡單地包括其他項目:

<modules> 
    <module>myProject-web</module> 
    <module>myProject-bl</module> 
    <module>myProject-da</module> 
    <module>myProject-domain</module> 
</modules> 

現在,只要構建myProject,Maven將重建的子組件,如果他們是過時的。由於maven可以單獨構建每個子組件,因此您可以在Maven回購中安裝每個組件,可以由需要使用項目的一個或多個部分的任何其他項目訪問。

+0

是的,這絕對是正確的做法。但是,這增加了另一個項目,並在Netbeans的開發過程中增加了另一個構建。例如,如果我在myProject-da中做了一個小改動,那麼我必須構建myProject,然後調試myProject-web(Netbeans也將構建它)。我知道一個額外的步驟並不是什麼大不了的,但是當做出很多小的改變時,它就會增加。 –

+0

不是你現在在做什麼?您構建您的業務邏輯(因爲它已更改),然後調試您的JSP包。這似乎是相同數量的步驟給我....我錯過了什麼? – RustyTheBoyRobot

相關問題