因此,正如在另一个线程中建议的那样(Arquillian ShrinkWrap已经切换到托管容器(Jboss为7.1),现在错误不同了
新的依赖项管理(请参阅上一个指向原始问题的链接查看)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-bom</artifactId>
<version>2.1.2</version>
<scope>test</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.5.Final</version>
<scope>test</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>然后我还得加上
<dependency>
<groupId>org.jboss.arquillian.core</groupId>
<artifactId>arquillian-core-api</artifactId>
<version>1.1.4.Final</version>
<scope>test</scope>
</dependency>因为我有个例外
Caused by: java.lang.NoClassDefFoundError: org/jboss/arquillian/core/api/threading/ExecutorService现在在Jboss的本地实例上部署似乎工作得很好(我会尽快用一个更简单的测试进行测试,但我认为一切都很好),本质上问题是将maven中存在的jar依赖项(mistral-be,它不是这个maven项目的一部分)添加到已部署的测试中(请参阅description this seems (Arquillian ShrinkWrap))。最后,我使用以下代码
String str = "C:\\IntellijProject\\Import***\\import****\\migrazione****-be\\pom.xml";
JavaArchive pomFiles = ShrinkWrap.create(MavenImporter.class)
.loadPomFromFile(str).importBuildOutput().as(JavaArchive.class);
/* https://github.com/shrinkwrap/resolver/blob/master/README.asciidoc#resolution-of-artifacts-defined-in-pom-files */
JavaArchive[] mistral_be = Maven.configureResolver().workOffline().resolve("it.****.mistral:mistral-be:0.1.0").withTransitivity().as(JavaArchive.class);
for (int i = 0; i < mistral_be.length ; i++) {
pomFiles = pomFiles.merge(mistral_be[i]);}
pomFiles.as(ZipExporter.class).exportTo(new File ("C:\\temp\\res.zip"));它生成了一个相当大的zip文件,只是为了检查结果,但同时尝试部署到jboss 7.1.1
18:46:17,003 INFO [org.jboss.as.repository] (management-handler-thread - 2) JBAS014900: Content added at location C:\jboss\jboss-as-7.1.1.Final\standalone\data\content\bc\b6fd502db2696342419c17a6d2ed82a4176a4e\content
18:46:17,008 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015876: Starting deployment of "arquillian-service"我有一个错误:
org.jboss.arquillian.container.spi.client.container.DeploymentException: Could not deploy to container: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"postImportBE-1.0-SNAPSHOT.jar\".STRUCTURE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"postImportBE-1.0-SNAPSHOT.jar\".STRUCTURE: Failed to process phase STRUCTURE of deployment \"postImportBE-1.0-SNAPSHOT.jar\""}}正如我在应用服务器日志中看到的,它是
Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes.我在压缩文件目录的META_INF中看到许多来自mistral-be的传递依赖的文件,所以问题可能是这样的。有没有办法生成一个带有有效签名的JAR文件?或者我可能使用了一个错误的方法来解决这个问题(以另一种方式构建jar或类似的想法)?我很好奇为什么pom中的依赖关系:
<dependency>
<groupId>it.**.mistral</groupId>
<artifactId>mistral-be</artifactId>
<version>0.1.0</version>
<scope>compile</scope>
</dependency>不是通过这个指令直接导入的吗?我错过了什么吗?
String str = "C:\\IntellijProject\\Import***\\import****\\migrazione****-be\\pom.xml";
JavaArchive pomFiles = ShrinkWrap.create(MavenImporter.class)
.loadPomFromFile(str).importBuildOutput().as(JavaArchive.class);谢谢
发布于 2015-09-15 23:39:26
在处理pom依赖时,我使用WebArchive而不是JavaArchive来包装由ShrinkWrap生成的所有必需代码:
String[] mavenLibs = {
"junit:junit:4.8.1"
};
WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war");
for (String dependency : mavenLibs) {
war.addAsLibrary(Maven.resolver().resolve(dependency).withTransitivity().asSingle(JavaArchive.class));
}使用这个机制,我没有你所描述的问题。
https://stackoverflow.com/questions/26453160
复制相似问题