为什么,尽管我
jboss-ejb3.xml添加到Intellij的工件Patrac-web:war爆炸式的/WEB每当我对pom.xml做最简单的更改时,Intellij就会从${PROJECT_DIR}/.idea/artifacts/Patrac_web_war_exploded.xml中删除以下条目
<element id="file-copy" path="$PROJECT_DIR$/Patrac-ejb/src/main/resources/META-INF/jboss-ejb3.xml" />因此,jboss-ejb3.xml不会被复制到目标目录中?
好像每次我对pom.xml进行更改时,都会使用POM“重新加载”部署配置,以覆盖我在IDE中所做的设置。也许是因为我的pom.xml中没有将jboss-ejb3.xml从源目录复制到目标目录的条目,所以每当Intellij“重新加载”时,我在Intellij中所做的设置就会不断消失。这纯粹是我的猜测,但这似乎是正在发生的事情。
如果是这样的话,我需要对pom.xml做什么更改才能使这种情况停止发生?
发布于 2013-02-06 08:17:37
当从Maven IDEA导入项目时,它的配置方式是这样的:当您从IDEA调用'Build‘时,它会产生与Maven 'package’目标相同的结果。如果您需要将jboss-ejb3.xml复制到WEB,只需将其放在‘src/main/webapp/WEB’目录下,Maven就会复制它,IDEA也会复制它。
发布于 2013-02-06 20:35:04
这里是我尝试过的Nik解决方案的另一种选择,因为我希望将jboss-ejb3.xml留在META中。查看一下maven文档展示了如何将jboss-ejb3.xml作为web资源并将其复制到WEB中,我在maven-war插件配置中添加了以下内容,问题得到了解决。嗯,算是吧。但不是真的。
<webResources>
<resource>
<directory>../Patrac-ejb/src/main/resources/META-INF</directory>
<includes>
<include>jboss-ejb3.xml</include>
</includes>
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>虽然这样做消除了修改IDEA方面配置设置的需要(因为Maven被配置为复制文件,而不是IDEA),但是引入了一个新的问题: WAR中出现了两个jboss-ejb3.xml副本,一个在WEB中,另一个在EJB中(在META中)。虽然没有明显的结果(应用程序运行得很好),但我还是不希望在EJB中有一个描述符的副本。
使用Maven EJB插件文档,我尝试在maven-ejb插件配置中添加一个排除。
<configuration>
<ejbVersion>3.1</ejbVersion>
<excludes>
<exclude>**/jboss-ejb3.xml</exclude>
</excludes>
</configuration>这本应阻止jboss-ejb3.xml的重复副本出现在EJB元INF中,但它对我来说不起作用,而且在谷歌搜索了"maven-ejb-plugin“的各种变体后,我放弃了。
如果我可以让排除生效,那么我会更喜欢这个解决方案,而不是将jboss-ejb3.xml迁移到src/main/webapp/webapp,因为尽管这个解决方案稍微复杂一些(它需要在两个POMs中增加Maven配置设置),但与EJB相关的描述符将保留在EJB模块中。
我决定用Nik的解决方案,直到我能解决排除的问题。
https://stackoverflow.com/questions/14489557
复制相似问题