Maven:在Netbeans中部署节省EAR仅在依赖项目打开时才有效

时间:2013-04-19 14:09:59

标签: java maven netbeans deployment glassfish

我的EAR项目的“保存时部署”选项无效,我不明白为什么。这是我的结构:

myproject-ear, packaging: EAR
--->myproject-core, packaging: JAR (ejbs)
--->myproject-web, packaging: WAR (.xhtml pages, some javascript and CSS)

我正在使用maven,我将战争引用JAR作为提供的依赖。

问题是我有一个Nexus存储库来处理我的JAR版本控制,我没有开发我的JAR项目。但是,如果我关闭我的JAR项目然后部署应用程序,快速部署就会停止在glassfish上工作(它甚至不会在我的EAR目标文件夹上生成gfdeploy,而是将所有文件复制到glassfish目录)。

以下是我的(简化)pom文件:

父亲项目:

<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>myproject</name>

<modules>
    <module>myproject-web</module>
    <module>myproject-ear</module>
</modules>

EAR项目(使用maven-ear-plugin):

<parent>
    <artifactId>myproject</artifactId>
    <groupId>mygroupid</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>myproject-ear</artifactId>
<packaging>ear</packaging>

<name>myproject-ear</name>

<dependencies>
    <dependency>
        <groupId>mygroupid</groupId>
        <artifactId>myproject-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>ejb</type>
    </dependency>
    <dependency>
        <groupId>mygroupid</groupId>
        <artifactId>myproject-web</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>war</type>
    </dependency>
</dependencies>

WAR项目(使用maven-war-plugin):

<parent>
    <artifactId>myproject</artifactId>
    <groupId>mygroupid</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>myproject-web</artifactId>
<packaging>war</packaging>

<name>myproject-web</name>

<dependencies>
    <dependency>
        <groupId>mygroupid</groupId>
        <artifactId>myproject-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>ejb</type>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

2 个答案:

答案 0 :(得分:3)

您的Netbeans版本可能存在错误。试试Netbeans 7.3版,看看它是否有效。我提到的问题说它在7.1.2中有效,但我先给出7.3一次。该问题在7.3中得到解决,并且仅在7.4 / 8开发版本中再次破裂。

答案 1 :(得分:1)

你正在混合许多不同的魔法(NetBeans,Maven,Nexus和自动部署),并不奇怪它不能完全按照你想要的方式工作。目前尚不清楚(从抽象工具开发人员的角度来看)当您尝试在部署中包含正在开发的项目的最新版本(即在Netbeans中打开的项目)时,正确的做法是什么,但该项目是关闭。回到Nexus存储库中的版本可能不是Netbeans开发人员实施自动部署的想法。

我的建议是创建另一个工作区,其中不包含JAR作为项目,而是严格将其视为Maven和NetBeans配置中的第三方库。除了需要处理JAR之外,请使用此工作空间。

或者只是让JAR项目保持打开状态。