Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven:Netbeans中EAR保存时部署仅在依赖项项目打开时工作_Java_Maven_Netbeans_Deployment_Glassfish - Fatal编程技术网

Java Maven:Netbeans中EAR保存时部署仅在依赖项项目打开时工作

Java Maven:Netbeans中EAR保存时部署仅在依赖项项目打开时工作,java,maven,netbeans,deployment,glassfish,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的war引用作为提供的依赖项 问题是我有一个Nexus存储库来处理我的JAR版本控制,而

我的EAR项目的保存时部署选项不起作用,我不明白为什么。以下是我的结构:

myproject-ear, packaging: EAR
--->myproject-core, packaging: JAR (ejbs)
--->myproject-web, packaging: WAR (.xhtml pages, some javascript and CSS)
我使用的是maven,我将JAR的war引用作为提供的依赖项

问题是我有一个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>
myproject
1.0-快照
聚甲醛
我的项目
myproject网站
我的耳朵项目
EAR项目(使用maven EAR插件):


我的项目
mygroupid
1.0-快照
我的耳朵项目
耳朵
我的耳朵项目
mygroupid
我的项目核心
1.0-快照
ejb
mygroupid
myproject网站
1.0-快照
战争
WAR项目(使用maven WAR插件):


我的项目
mygroupid
1.0-快照
myproject网站
战争
myproject网站
mygroupid
我的项目核心
1.0-快照
ejb
假如
爪哇
JavaEEAPI
6
假如

您混合了许多不同的功能(NetBeans、Maven、Nexus和auto deploy),因此它不能完全按照您希望的方式工作也就不足为奇了。从抽象工具开发人员的角度来看,当您试图在部署中包含处于活动开发中的项目(即在Netbeans中打开的项目)的最新版本,但该项目已关闭时,不清楚应该做什么。回到Nexus存储库中的版本可能不是实现自动部署的Netbeans开发人员的想法

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


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

您混合了许多不同的功能(NetBeans、Maven、Nexus和auto deploy),因此它的工作方式与您希望的不完全一样也就不足为奇了。从抽象工具开发人员的角度来看,当您试图在部署中包含处于活动开发中的项目(即在Netbeans中打开的项目)的最新版本,但该项目已关闭时,不清楚应该做什么。回到Nexus存储库中的版本可能不是实现自动部署的Netbeans开发人员的想法

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


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

这可能是您的Netbeans版本的一个bug。尝试Netbeans 7.3版,看看它是否在那里工作。我提到的问题说它在7.1.2中有效,但我会先给7.3一个机会。据报告,该问题已在7.3中得到解决,仅在7.4/8开发版本中再次出现。

这可能是您的Netbeans版本的一个错误。尝试Netbeans 7.3版,看看它是否在那里工作。我提到的问题说它在7.1.2中有效,但我会先给7.3一个机会。据报道,该问题在7.3中得到了解决,仅在7.4/8开发版本中再次出现。

是的,我知道这里涉及的所有魔力,以及使所有功能协同工作是多么困难,但不幸的是,您的建议不起作用,因为我的JAR包含EJB,它们必须在maven-ear插件中作为“EJB模块”部署。由于EJB存在一些问题(这只是其中之一),我正在考虑使用Spring,那么您的建议就行了。@Hoffmann是的,如果可以选择的话,我强烈建议不要使用EJB。也就是说,我不理解把罐子当作来自供应商的问题。您将如何使用供应商提供的EJB来设置项目?我相信我遇到的问题是maven-ear插件,在该插件中,您必须使用“ejbModule”标记来定义EJB(简单地将其作为依赖项不起作用,EJB无法启动)。这似乎是让Netbeans感到困惑的地方。我在EJB方面遇到了一些问题,特别是在应用服务器方面(我必须部署在多个应用服务器上,在J2EE实现中管理它们的不一致性是一场噩梦)。但是,您能否详细说明不使用EJB的更多原因,以便我可以向我的团队证明这一点?正如您所发现的,EJB支持/实现充其量是不一致的,就像浏览器和HTML+CSS+JavaScript一样。从理论上讲,这是一个好主意,将EJB作为正式规范的一部分对企业非常友好,但在实践中,我所知道的EJB提供给您的任何东西都是Spring+Hibernate无法以更可移植的形式提供的。(Spring从一开始就打算取代EJB等),一般来说,当您使用Spring取代EJB时,您可以更好地访问其他更现代的集成(例如REST、JSON),几乎是免费的。是的,我知道这里涉及到的所有魔法,以及让它们协同工作是多么困难,但不幸的是,您的建议不起作用,因为我的JAR包含ejb,它们必须作为maven-ear插件中的“ejbmodule”部署。由于EJB存在一些问题(这只是其中之一),我正在考虑使用Spring,那么您的建议就行了。@Hoffmann是的,如果可以选择的话,我强烈建议不要使用EJB。也就是说,我不理解把罐子当作来自供应商的问题。你将如何安排这个项目
<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>
<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>