maven integration-test阶段将jbossall-client.jar附加到类路径中

时间:2012-09-13 02:56:59

标签: java maven intellij-idea

我正在尝试在我的java项目中使用maven设置集成测试阶段。我对jboss没有任何依赖性(jboss-common-core除外,它由hibernate-entitymanager传递)。我对故障安全插件的设置是:

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

当我运行mvn integration-test -Dmaven.failsafe.debug并连接我的调试器并评估System.getProperty("java.class.path")时,我在类路径中看到了一个jbossall-client.jar!当我在IntellJ 122.327中本地运行测试时,类路径不包含jbossall-client.jar。我一直试图弄清楚为什么这个jar被添加到类路径中。有没有其他人经历过这个?提前谢谢。

更新:我尝试从我的.m2 / repository目录中删除jbossall-client并仅运行clean和package阶段,看起来我的项目确实依赖于此,因为这个jar在运行包时被下载。仍然很奇怪,因为我的pom对这个jar没有直接或传递依赖。此外,当我尝试通过添加配置

运行故障安全插件时将其排除在类路径中
<classpathDependencyExcludes>org.jboss.client:jbossall-client</classpathDependencyExcludes>

我收到以下错误:

Unable to parse configuration of mojo org.apache.maven.plugins:maven-failsafe-plugin:2.12:integration-test
 for parameter classpathDependencyExcludes: Cannot assign configuration entry 'classpathDependencyExcludes' 
with value 'org.jboss.client:jbossall-client' of type java.lang.String
 to property of type java.util.List -> [Help 1]

failsafe plugin website表示标记应具有值groupId:artifactId,这就是我所拥有的。任何想法为什么会失败?

第二次更新:刚刚意识到故障安全插件webpage中存在拼写错误。在他们的例子中:

  <classpathDependencyExcludes>
    <classpathDependencyExcludes>org.apache.commons:commons-email</classpathDependencyExcludes>
  </classpathDependencyExcludes>

应该是

  <classpathDependencyExcludes>
    <classpathDependencyExclude>org.apache.commons:commons-email</classpathDependencyExclude>
  </classpathDependencyExcludes>

现在我可以传递解析错误,但jbossall-client仍然被加载到类路径中。

1 个答案:

答案 0 :(得分:0)

我已经找到了问题,classpathDependencyExclude标记按预期工作。我愚蠢地排除了错误的groupId(我排除了org.jboss.client:jbossall-client,当传递依赖是jboss:jbossall-client时)。我观察到的另一件事是jbossall-client是一个第三级传递依赖(即它是直接依赖的第二个孩子; myproject - &gt; A - &gt; B - &gt; jbossall-client),它是在maven子模块的父pom(在我的例子中B是一个较大项目的子模块)。当我使用依赖插件检查maven依赖时,它报告实际项目依赖项不包括jbossall-client。但是由于某种原因,集成测试阶段似乎将它包含在类路径中。我将进一步调查,但现在黑客工作。