Maven看不到jBehave

时间:2017-09-08 20:25:13

标签: java eclipse maven jbehave

我刚刚开始学习jBehave和Maven(在Eclipse中)。我已经安装了JBehave Eclipse 1.0.0.20140605-071并将其添加到我的Maven依赖项中 - pom.xml的相关位看起来像(在回复后编辑):

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.wmaop</groupId>
    <artifactId>wm-jbehave</artifactId>
    <version>1.0.0</version>
    <scope>test</scope>
  </dependency>
</dependencies>
<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>

这给了我一个错误:

missing artefact org.wmaop:wm-jbehave.jar:1.0.0

如果我尝试构建,我会收到错误:

Failure to find org.wmaop:wm-jbehave:jar:1.0.0 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

“使用Maven创建测试项目”tutorial说“如果项目中存在错误,请打开pom.xml文件以检查是否找不到wm-jbehave依赖项。验证您的Designer是否可以访问到了互联网,以便检索jar依赖项“,但我不知道这意味着什么 - 计算机当然可以访问互联网 - 我在上面打字。

如何解决此错误?

5 个答案:

答案 0 :(得分:6)

  

我甚至不确定WM-AOP的适用范围,除了它在中提到的   我得到的错误信息。

你好像甚至都不知道WM-AOP是什么:) 这个tutorial(来自您的问题)展示了如何与他们的webMethods Designer一起启用和运行JBehave。
换句话说 - 这是一个使用另一个独立项目JBehave的独立产品(集成服务器) 要运行本教程,首先需要download, install and configure webMethods Designer & Integration Server Flow services.,然后创建一个使用此服务器和JBehave在该服务器上运行测试的项目。

但是你不需要这些东西来学习JBehave。 JBehave是一个独立的产品,可以在许多环境中运行,甚至可以在纯Java(JDK)中运行。

只需按照以下步骤

<强> 1。在Eclipse中 - 单击New / Maven项目 enter image description here

<强> 2。在以下对话框中单击“下一步”

enter image description here

第3。在下一页上键入“jbehave-simple-archetype”,选择版本4.1并单击下一步
注意 - 不要使用最新版本4.1.1,因为它不起作用(有一个错误将在1-2周内在即将发布的版本4.1.2中解决 enter image description here

<强> 4。输入项目的group-id和artifact-id,然后单击Finish enter image description here

这就是全部 - 您的JBehave项目已准备好。

src/main/resources/org/example/myJbehave/stories/中,您会发现my.story有一个示例故事:

Scenario: A scenario with some pending steps

Given I am a pending step
And I am still pending step
When a good soul will implement me
Then I shall be happy

src/main/java/org/example/myJbehave/steps/中,您会找到MySteps.java课程。以这种方式修改它:

import org.jbehave.core.annotations.Alias;
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

public class MySteps {

    @Given("I am a pending step")
    @Alias("I am still pending step")
    public void given_i_am_pending_step() {

        System.out.println("Tihis is implementation of GIVEN");
    }

    @When("a good soul will implement me")
    public void when_a_good_soul_will_implement_me() {
        System.out.println("Tihis is implementation of WHEN");
    }

    @Then("I shall be happy")
    public void then_i_shall_be_happy() {
        System.out.println("Tihis is implementation of THEN");
    }
}

/src/main/java/org/example/myJbehave/中,您会找到MyStories.java
这个类包含配置&amp;引导代码
用鼠标右键单击它,然后选择“Run as / JUnit test”,故事就会被执行 enter image description here

enter image description here

您将在控制台选项卡中看到如下结果:

Processing system properties {}
Using controls EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=false,verboseFiltering=false,storyTimeouts=60,threads=2,failOnStoryTimeout=false]

(BeforeStories)
Running story org/example/myJbehave/stories/my.story
Tihis is implementation of GIVEN
Tihis is implementation of GIVEN
Tihis is implementation of WHEN
Tihis is implementation of THEN

(org/example/myJbehave/stories/my.story)
Scenario: A scenario with some pending steps
Given I am a pending step
And I am still pending step
When a good soul will implement me
Then I shall be happy



(AfterStories)
Generating reports view to 'C:\Users\irko\eclipse-workspace1\myJbehave\target\jbehave' using formats '[stats, console, txt, html, xml]' and view properties '{navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, reports=ftl/jbehave-reports.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl, decorated=ftl/jbehave-report-decorated.ftl, maps=ftl/jbehave-maps.ftl}'
Reports view generated with 2 stories (of which 0 pending) containing 1 scenarios (of which 0 pending)

注意:按照these steps安装JBehave Eclipse插件,其中包含有用的*.story编辑器。

答案 1 :(得分:4)

据我所知,它不在Maven中央仓库上,所以没有wodner,但它可以在GitHub上使用,所以我们可以使用JitPack

来获取它

将此添加到您的POM

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

答案 2 :(得分:3)

尝试使用此回购:https://repo.azure.jenkins.io/public

或者在本地构建项目:

git clone https://github.com/wmaop/wm-jbehave.git --branch  wm-jbehave-1.0.0
cd wm-jbehave
mvn clean install

答案 3 :(得分:1)

根据发布的错误:

&#34;未能找到org.wmaop:https://repo.maven.apache.org/maven2中的wm-jbehave:jar:1.0.0缓存在本地存储库中,在中心的更新间隔过去之前不会重新尝试解析强制更新 - &gt; [帮助1]&#34;

似乎项目需要强制maven更新来解决丢失的人工制品。只需右键单击您的项目 - &gt; Maven - &gt;更新项目。确保&#34;强制更新快照/版本&#34;检查。

答案 4 :(得分:0)

maven依赖项和存储库条目用于编译基于tutorial link in your question的示例maven项目。

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.wmaop</groupId>
        <artifactId>wm-jbehave</artifactId>
        <version>1.1.1</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>com.entrust</groupId>
                <artifactId>toolkit</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.softwareag.webmethods</groupId>
                <artifactId>wm-isserver</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.softwareag.webmethods</groupId>
                <artifactId>wm-isclient</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>bintray.io</id>
        <url>https://dl.bintray.com/wmaop/maven</url>
    </repository>
</repositories>

请注意,本教程还需要额外的设置来运行HelloWorld故事。

使用简单的jbehave maven原型来关注@krokodilko提供的答案可能更容易。