簡體   English   中英

Pom中的Arquillian ShrinkWrap Maven依賴項

[英]Arquillian ShrinkWrap maven dependencies in pom

因此,正如在另一個線程中所建議的那樣( Arquillian ShrinkWrap已切換到托管容器(Jboss AS 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項目的一部分)進行部署的測試(請參閱此問題的描述( 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文件? 還是我使用錯誤的方法來解決此問題(以其他方式或類似的方式構造罐子)? 而且我很想知道為什么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);

謝謝

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

使用這種機制,我沒有遇到您描述的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM