2014-10-19 123 views
1

因此,作爲建議在另一個線程(Arquillian ShrinkWrap已切換到管理容器(JBoss作爲7.1),現在的錯誤是不同在POM的Arquillian拆封Maven依賴

新的依賴同治(參見前面的鏈接,原來的問題看)

<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,不屬於這個maven項目的一部分)到已部署的測試(請參閱此問題的描述(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文件僅檢查結果,但同時try'n部署到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看到,所以這個問題可能是這一點。無論如何,有一個有效的簽名生成一個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); 

謝謝

+0

我認爲問題是,所有依賴JAR中的所有文件都被複制到新的歸檔中,並且一些相關的JAR有一個簽名,該簽名也將被複制。但是這個簽名顯然是錯誤的。 – svenwltr 2015-10-06 07:36:10

回答

1

當POM依賴關係處理我用WebArchive代替JavaArchive的用於包裝的拆封生成所需的所有代碼:

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)); 
} 

使用這個mecanism我沒有有你描述的問題。