Java Maven+Netbeans调试WAR应用程序

Java Maven+Netbeans调试WAR应用程序,java,maven,netbeans,Java,Maven,Netbeans,我们有2个Maven应用程序,一个包含JSP和表示层代码的war应用程序,以及一个包含业务层代码的共享库 在迁移到maven之前,我们将共享库作为WAR应用程序的项目参考。每当我们在Netbeans中构建或调试WAR应用程序时,共享库都会自动编译和构建,任何新的更改都会自动获取 在Maven中,似乎每当我们对共享库进行更改时,我们现在都需要在调试之前构建共享库项目。有没有办法保持旧方法的效率 当我们调试WAR应用程序时,有没有办法让Maven在调试时自动构建共享库依赖项本地jar项目?在ecli

我们有2个Maven应用程序,一个包含JSP和表示层代码的war应用程序,以及一个包含业务层代码的共享库

在迁移到maven之前,我们将共享库作为WAR应用程序的项目参考。每当我们在Netbeans中构建或调试WAR应用程序时,共享库都会自动编译和构建,任何新的更改都会自动获取

在Maven中,似乎每当我们对共享库进行更改时,我们现在都需要在调试之前构建共享库项目。有没有办法保持旧方法的效率


当我们调试WAR应用程序时,有没有办法让Maven在调试时自动构建共享库依赖项本地jar项目?

在eclipse中,这只是一个自动构建/正确设置的问题。只需确保安装了maven插件,并将其用作项目的构建器


我不认为netbeans有什么不同。

在eclipse中,它只是一个自动构建/正确设置的问题。只需确保安装了maven插件,并将其用作项目的构建器


我不认为netbeans有什么不同。

好的,我最终使用maven invoker插件实现了这一点:

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

我高度怀疑这是最佳实践,但它完成了任务。您可以将其安装到它自己的配置文件中,以确保它不会干扰自动构建。

好的,我终于使用maven invoker插件完成了这项工作:

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

我高度怀疑这是最佳实践,但它完成了任务。您可以将其安装到它自己的配置文件中,以确保它不会干扰自动构建。

我解决这一问题的方法是使用一个封装所有子组件的父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 repo中拥有每个部分,需要使用项目一个或多个部分的任何其他项目都可以访问这些部分。

我解决这一问题的方法是拥有一个封装所有子组件的父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 repo中的每个部分都可以被需要使用项目的一个或多个部分的任何其他项目访问。

对JSP的更改不会有问题。我需要Netbeans做的是在触发WAR应用程序的构建时触发共享库的构建。为什么?它没有改变,为什么还要麻烦呢?如果已更改但未更新,则生成路径不正确。例如,如果我将共享库中的方法签名从getWidget更改为getWidgetOne,则WAR文件中的jsp将不会拾取它,除非我生成共享库,然后调试WAR项目。我需要war项目在构建共享库的jar时自动对其进行打包。在eclipse中,您只需将依赖项目添加到war项目的构建路径中。并删除对代码的任何其他引用,即自动构建路径中已编译的jar文件。这是特定于ide的,与mavenDoes无关,只要您更改源文件,eclipse就会自动构建jar?如果没有,新的jar是如何生成的?对JSP的更改没有问题。我需要Netbeans做的是在触发WAR应用程序的构建时触发共享库的构建。为什么?它没有改变,为什么还要麻烦呢?如果已更改但未更新,则生成路径不正确。例如,如果我将共享库中的方法签名从getWidget更改为getWidgetOne,则WAR文件中的jsp将不会拾取它,除非我生成共享库,然后调试WAR项目。我需要war项目在构建共享库的jar时自动对其进行打包。在eclipse中,您只需将依赖项目添加到war项目的构建路径中。并删除对代码的任何其他引用,即自动构建路径中已编译的jar文件。这是特定于ide的,与mavenDoes无关,只要您更改源文件,eclipse就会自动构建jar?如果没有,新的jar是如何生成的?是的,这绝对是正确的方法。但这会在Netbeans的开发过程中添加另一个项目和另一个构建。例如,如果我在myProject da中做了一个小的更改,那么我必须构建myProject和th
调试Netbeans也将构建的myProject web。我知道多走一步没什么大不了的,但是当你做了很多小的改变时,它就会累加起来。这不是你现在正在做的吗?您在业务逻辑发生更改后构建业务逻辑,然后调试JSP包。对我来说,这似乎是同样多的步骤。。。。我遗漏了什么吗?是的,这绝对是正确的做法。但这会在Netbeans的开发过程中添加另一个项目和另一个构建。例如,如果我在myProject da中做了一个小更改,那么我必须构建myProject,然后调试Netbeans也将构建的myProject web。我知道多走一步没什么大不了的,但是当你做了很多小的改变时,它就会累加起来。这不是你现在正在做的吗?您在业务逻辑发生更改后构建业务逻辑,然后调试JSP包。对我来说,这似乎是同样多的步骤。。。。我错过什么了吗?