2012-06-28 56 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

相关问题