2016-07-01 3 views
0

나는 같은 프로젝트 구조를 가지고있다. ProjectB의 Arquillian 기반 테스트는 ProjectA의 귀에 달려 있습니다 (ProjectA 귀를 사용하여 추가 배포). 메이븐 설치 목표는 잘 작동하지만 release:preparerelease:perform은 그렇지 않습니다. 첫 번째 단계 중 하나에있는 maven-release-plugin은 프로젝트 버전을 증가시킵니다. ProjectB가 PROJECTA의 배치를 구성 할 때 그리고 그것은 새로운 버전으로 이슈를 찾을 수 없습니다 (하지만 작업 공간에 존재 금지 - 지역의 repo에서) :받는다는 출시 - 플러그인과 Arquillian

Maven.configureResolver().offline().loadPomFromFile("pom.xml").importRuntimeAndTestDependencies().resolve().withoutTransitivity().asResolvedArtifact(); 
: 나는 그런 명령 유물을 해결

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) 

PS dryRun 옵션을 설정하면 mvn release:prepare이 제대로 작동합니다.

maven이 릴리스 될 때 어떻게 아티팩트를 해결할 수 있습니까?

답변

1

테스트 케이스 구성 방식에 따라 Arquillian 테스트를 통합 테스트로 사용하면 별도로 실행할 수 있습니다. 필요한 경우
, 받는다는 - 안전 장치 - 플러그인을 통합 : 자사의 통합 테스트로 감지하도록

<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 테스트가 통합 테스트로 실행됩니다. 즉, arquillian 테스트를 실행하려면 mvn verify을 사용하십시오.

그 자체로는 문제가 해결되지 않습니다. 간단한 해결 방법으로, 이것이 유일하게 실행되는 통합 테스트 인 경우 mvn release:prepare-Darguments="-DskipITs"을 추가하면 arquillian 테스트를 건너 뜁니다. 또한 Arquillian 테스트에 JUnit 카테고리를 추가하고 해당 레벨에서 필터링 할 수 있습니다. 자세한 내용은 maven-failsafe-plugin site에서 확인할 수 있습니다.

관련 문제