为什么我是
在项目的EJB facet中设置JBoss EJB部署描述符的正确路径
将jboss-ejb3.xml
添加到Intellij的工件Patrac-web:war爆炸的< output root> / WEB-INF
每当我对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
Intellij进行更改时,使用POM重新加载“部署配置”以覆盖我在IDE中进行的设置。也许是因为我的pom.xml
中没有用于将jboss-ejb3.xml
从源目录复制到目标目录的条目,我在Intellij IDE中创建的设置会在Intellij“重新加载”时不断消失。对我而言纯粹的猜想,但这似乎正在发生。
如果是这样,我需要对pom.xml
进行哪些更改才能停止此操作?
答案 0 :(得分:2)
当从Maven IDEA(重新)导入项目时,将其配置为当您从IDEA调用“Build”时,它会产生与Maven的“包”目标相同的结果。如果你需要将jboss-ejb3.xml复制到WEB-INF,只需将它放在'src / main / webapp / WEB-INF'目录下,它将由Maven复制,IDEA也是如此。
答案 1 :(得分:0)
以下是我尝试过的Nik解决方案的替代方案,因为我想将jboss-ejb3.xml
留在META-INF中。 Taking a look at the maven documentation,其中显示了如何将jboss-ejb3.xml
视为Web资源并将其复制到WEB-INF中,我将以下内容添加到maven-war-plugin配置中,问题得以解决。好吧,有点儿。但不是真的。
<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),引入了一个新问题:出现了两个jboss-ejb3.xml
副本WAR,一个在WEB-INF中,另一个在EJB JAR中(在META-INF中)。虽然没有明显的后果(应用程序运行得很好)但我更喜欢没有位于EJB JAR内的描述符的副本。
使用Maven EJB plugin documentation,我尝试在maven-ejb-plugin配置中添加一个排除项,例如。
<configuration>
<ejbVersion>3.1</ejbVersion>
<excludes>
<exclude>**/jboss-ejb3.xml</exclude>
</excludes>
</configuration>
这应该会阻止{J} META-INF中出现jboss-ejb3.xml
的重复副本,但它对我不起作用,并且在搜索“maven-ejb-plugin”的各种变体之后无法搜索适当地“我放弃了。
如果我可以让排除工作,那么我会更喜欢这个解决方案而不是将jboss-ejb3.xml
移动到src / main / webapp / WEB-INF中,因为虽然这个解决方案稍微复杂一些(它需要额外的Maven配置)在两个POM中设置),与EJB相关的描述符将保留在EJB模块中。
我决定采用Nik的解决方案,直到我能解决排除问题。