2012-03-03 119 views
0

我不知道这是个问题还是建议。但我会问这是一个问题,因为我可能会犯错。Maven:跳过测试但仍然无法启动

我的问题是,我想跳过Maven构建测试,在Eclipse插件运行Maven,当我检查了跳过测试选项配置。它仍然无法通过测试surefire插件,因为它无法下载2.4.3版本(即使我之前的maven项目使用了2.7.2,并且它已经存在于我的回购中)所以我尝试了跳过测试,但它仍然失败。

我配置我的POM使用的万无一失的2.7.3插件,我已经有了,它只是上前说跳过的测试。现在,我的困惑是,当它已经要跳过测试部分时,为什么还要进入下载并确认插件是否存在。只是跳过它,我说..

很好,就是行家的正常行为,当你跳过一些插件还是下载,如果你要使用它。或者是我错误地做了下载。

可能是因为有些新东西叫做“Effective POM”,它包含了插件管理区域中的surefire插件2.4.2的列表,当我使用m2eclipse在eclipse中导入我的maven项目时,我无法编辑Effective POM。在制作Maven项目时,我之前没有在NetBeans中看到过这个。

为了工作,我加入我的建造轮廓不必要的保命插件条目,并跳过了测试,有作为,并补充说我在回购就已经版本。我只是这样做的,以便我的项目也可以在eclipse下构建。其他明智的我的项目在NetBeans和简单的命令行中工作没有任何问题。

有什么意见!!

我想maven应该能够先看到SKIP部分,然后进入插件的使用。

赛义德..

+0

你能后你得到了错误的信息?而pom(节选)会有所帮助。 – khmarbaise 2012-03-03 16:47:42

+0

该错误只是说它不能下载surefire插件2.4.3并要求我手动下载并手动添加它。所以我使用了2.7.2(对不起,它不是2.7.3)。现在它的工作就像我在POM中添加它一样。 eclipse插件在Pom.xml中有一个新的部分叫做Effective POM,它在其插件管理部分有这个2.4.3插件版本。我通过在我的实际POM中添加2.7.2来驾驶它。 (有效POM是一个不可编辑的POM我认为日食实际上矿采用沿) – sarmahdi 2012-03-04 06:56:54

+0

有效POM是行家与您的项目目前POM混合的超级POM。为了更加准确,你的pom继承了超级pom中的东西。您可以输出这个命令行以及通过MVN帮助:有效-POM ... – khmarbaise 2012-03-04 11:21:05

回答

0

根据你所提到的,你不明白使用的插件和配置插件之间的差异。在这种情况下,您正在使用该插件(它位于您的构建区域中,或者您已经通过超级Pom计算出)。此外,尽管maven-surefire-plugin in version 2.7.3不存在,但您仍试图跳过测试。

配置参数跳过不会执行测试,也不会编译它们。如果你不想在有限的时间内忽略这些测试,你可以使用“skipTest”参数,与跳过相反将继续编译测试。

我会建议使用你的项目pluginManagement部分或你的父POM定义Maven的万无一失,插件(在此期间存在于2.12版本)的版本...

下面的代码片段将pluginManagement部分添加到一个可以控制maven-surefire插件版本将被使用的pom中。

<build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.11</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
    .. 
    </build> 

你插入之后到项目的pom输出作用POM应该给你的版本...否则,你可能需要先更新项目配置。

+0

我从行家建设2.7.2并自行下载自己的回购协议。看着你的链接evev 2.7.2是一个旧版本。当我将该项目添加到eclipse中并使用maven插件进行eclipse时,它创建了一个有效的POM,用于列出该插件的OLDer版本。我想这是很难连接到Eclipse插件来配置使用2.4.3。我看到有效POM中的很多插件实际上都很旧。我无法控制有效的POM,所以我不能在那里改变任何东西。 – sarmahdi 2012-03-04 07:00:42

+0

Eclipse插件无关这个问题,因为它是基于Maven中(超级POM;如前所述)。 – khmarbaise 2012-03-04 11:22:00

0

编译和运行测试是maven的默认lifecycle的一部分。由于maven使用surefire进行运行测试,因此需要下载surefire。skipTests不是maven配置,而是一个可靠的插件配置。该插件确定maven需要skip tests

至于2.4.3的surefire插件,它是valid version,但会与2.0.6版本的maven一起使用。最有可能你使用的是较新的行家,但是,由于某种原因,有您的系统上了年纪的行家版super pom

0

skipTest没有告诉Maven来跳过测试生命周期,它告诉万无一失插件不运行它们。插件仍然是生命周期的一部分(当它被调用时,它什么也不做)。因此你的错误。

如果你不想要一切,你需要定义你自己的包装(因为surefire是标准jar包装生命周期的一部分) - 这比仅选择适用于surefire的版本更重要你(在你的部分添加一个右边的部分)。

相关问题