玩! war 命令 - 是不是可以从应用程序 /lib 文件夹中排除某些 jar
Posted
技术标签:
【中文标题】玩! war 命令 - 是不是可以从应用程序 /lib 文件夹中排除某些 jar【英文标题】:Play! war command - Is it possible to exclude certain jar from the application /lib folder玩! war 命令 - 是否可以从应用程序 /lib 文件夹中排除某些 jar 【发布时间】:2012-01-05 20:25:13 【问题描述】:我正在尝试将 play 应用程序自动部署为 .war 文件。
最终应用程序将在 JBOSS AS7 上运行。 我现在遇到的问题是,当我将战争部署到 JBOSS 时,我得到了这个异常。
14:52:39,728 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "my-test-app-server-0.0.2-SNAPSHOT.war"
14:52:43,822 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC00001: Failed to start service jboss.deployment.unit."my-test-app-server-0.0.2-SNAPSHOT.war".PARSE: org.jboss.msc.service.Start
Exception in service jboss.deployment.unit."my-test-app-server-0.0.2-SNAPSHOT.war".PARSE: Failed to process phase PARSE of deployment "my-test-app-server-0.0.2-SNAPSHOT.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.0.2.Final.jar:7.0.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_22]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_22]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_22]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: Failed to parse POJO xml ["/C:/jboss-as-web-7.0.2.Final/bin/content/my-test-app-server-0.0.2-SNAPSHOT.war/WEB-INF/lib/netty-3.2.5.Final.jar/META-INF/jboss-beans.xml"]
at org.jboss.as.pojo.KernelDeploymentParsingProcessor.parseDescriptor(KernelDeploymentParsingProcessor.java:130)
at org.jboss.as.pojo.KernelDeploymentParsingProcessor.parseDescriptors(KernelDeploymentParsingProcessor.java:104)
at org.jboss.as.pojo.KernelDeploymentParsingProcessor.deploy(KernelDeploymentParsingProcessor.java:76)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.0.2.Final.jar:7.0.2.Final]
... 5 more
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[17,1] Message: Unexpected element 'urn:jboss:bean-deployer:2.0deployment'
at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:98) [staxmapper-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:59) [staxmapper-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.as.pojo.KernelDeploymentParsingProcessor.parseDescriptor(KernelDeploymentParsingProcessor.java:123)
... 8 more
我发现,如果我在将 lib/netty-3.2.5.Final.jar 文件部署到 JBOSS 之前手动从 war 中删除它,问题就会消失。
当我使用 play war 命令生成战争时,现在有办法做到这一点吗? 任何有关这方面的信息将不胜感激。 谢谢
【问题讨论】:
【参考方案1】:我并不知道。 play war
命令允许你传递一个排除列表,我已经从下面的 python 文件中复制了 cmets。
~ To exclude some directories, use the --exclude option and ':'-separator (eg: --exclude .svn:target:logs:tmp).
但是,这表明它仅适用于目录。
执行的命令是framework/pym/utils.py
中的 package_as_war,所以你可以破解它来专门删除文件,但显然如果你更新你的 Play 版本,这将不会向后兼容。
【讨论】:
以上是关于玩! war 命令 - 是不是可以从应用程序 /lib 文件夹中排除某些 jar的主要内容,如果未能解决你的问题,请参考以下文章