首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-release-plugin和Arquillian

maven-release-plugin和Arquillian
EN

Stack Overflow用户
提问于 2016-07-01 17:22:39
回答 1查看 204关注 0票数 0

我有这样的项目结构:

代码语言:javascript
复制
Parent
  ProjectA
  ProjectB

ProjectA产生一只耳朵。基于Arquillian的ProjectB测试依赖于ProjectA的ear (使用ProjectA ear创建额外的部署)。release:perform install goal运行良好,但Maven和Maven则不行。第一阶段的maven-release-plugin增加了项目的版本。当ProjectB构建ProjectA的部署时,它无法找到具有新版本的工件(但它存在于工作区中,而不是本地存储库中):

代码语言:javascript
复制
java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.EnterpriseArchive com.....SchemaCreationTest.createFleetEmulator()
[INFO]  at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:434)
[INFO]  at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
[INFO]  at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:367)
[INFO]  at org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenRepositorySystem.resolveDependencies(MavenRepositorySystem.java:121)
[INFO]  at org.jboss.shrinkwrap.resolver.impl.maven.MavenWorkingSessionImpl.resolveDependencies(MavenWorkingSessionImpl.java:228)
[INFO]  at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.using(MavenStrategyStageBaseImpl.java:71)
[INFO]  at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.withoutTransitivity(MavenStrategyStageBaseImpl.java:58)
[INFO]  at org.jboss.shrinkwrap.resolver.impl.maven.MavenStrategyStageBaseImpl.withoutTransitivity(MavenStrategyStageBaseImpl.java:40)

我使用下面的命令解析工件:

代码语言:javascript
复制
Maven.configureResolver().offline().loadPomFromFile("pom.xml").importRuntimeAndTestDependencies().resolve().withoutTransitivity().asResolvedArtifact();

如果我设置了dryRun选项,则mvn release:prepare可以正常工作。

当maven release:prepare工作时,我如何解决工件?

EN

回答 1

Stack Overflow用户

发布于 2016-11-07 14:10:39

根据您的测试用例的结构,将Arquillian测试作为集成测试允许它们单独执行。

如果需要,集成maven-failsafe-plugin:

代码语言:javascript
复制
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <parallel>methods</parallel>
                    <threadCount>1</threadCount>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>2.19.1</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </pluginManagement>

    <plugins>...
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

重命名您的测试类,以便将其检测为集成测试。例如,将AcmeTest重命名为AcmeIT,那么您的arquillian测试将作为集成测试执行,即使用mvn verify运行arquillian测试。

这本身并不能解决问题。作为一种简单的变通方法,如果这是唯一执行的集成测试,您可以将-Darguments="-DskipITs"添加到您的mvn release:prepare中,您的arquillian测试将被跳过。您还可以将JUnit类别添加到arquillian测试中,并在该级别进行过滤。有关更多信息,请访问maven-failsafe-plugin site

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38141704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档