首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-plugin-testing驾驭session.getLocalRepository()返回null

maven-plugin-testing驾驭session.getLocalRepository()返回null
EN

Stack Overflow用户
提问于 2017-02-14 01:38:59
回答 1查看 611关注 0票数 2

当使用MojoRule时,会话中的localRepository是空的,即使我是在测试pom中传递它

测试Pom

代码语言:javascript
复制
    <build>
    <plugins>
        <plugin>
            <groupId>myplugin</groupId>
            <artifactId>isolatedFeatureBranch</artifactId>
            <goals>
                <goal>SetRepositoryProperties</goal>
            </goals>
            <configuration>
                <localRepository>${localRepository}</localRepository>
                <branchName>feature/defaultInPomFile</branchName>
            </configuration>
        </plugin>

Mojo类

代码语言:javascript
复制
/**
 * Maven Project Access
 */
@Component
protected MavenProject project;

/**
 * Local Repository.
 */
@Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
private ArtifactRepository localRepository;

测试代码

代码语言:javascript
复制
  @Rule public TestName name = new TestName();
  @Rule public MojoRule mojoRule = new MojoRule();
  @Rule public TestResources testResources = new TestResources(testProjects.getAbsolutePath(), workDir.getAbsolutePath());

  private MavenProject project;
  private MavenSession session;
  private SetRepositoryPropertiesMojo mojo;
  @Before
  public void setUp() throws Exception {
    // setup with pom set BRANCHNAME  set in pom
    File pomDir = testResources.getBasedir("SetPropertiesTestsDefaultInPom");
    project = mojoRule.readMavenProject(pomDir);

    session = mojoRule.newMavenSession(project);

    // Generate Execution and Mojo for testing
    MojoExecution execution = mojoRule.newMojoExecution("SetRepositoryProperties");
    mojo = (SetRepositoryPropertiesMojo) mojoRule.lookupConfiguredMojo(session, execution);

  }

误差

代码语言:javascript
复制
java.lang.NullPointerException
at SetPropertiesFeatureBranchTests.setRemoteRepositoryHappyPath(SetPropertiesFeatureBranchTests.java:98)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 01:42:25

我们需要创建一个localRepository,然后使用请求将它附加到会话。之后,我们创建了mojo,类的localRepository变量包含了repo

测试代码

代码语言:javascript
复制
  public void setUp() throws Exception {
    // setup with pom set BRANCHNAME  set in pom
    File pomDir = testResources.getBasedir("SetPropertiesTestsDefaultInPom");
    project = mojoRule.readMavenProject(pomDir);

    // Generate session
    session = mojoRule.newMavenSession(project);

    // add localRepo - framework doesn't do this on its own
    ArtifactRepository localRepo = createLocalArtifactRepository();
    session.getRequest().setLocalRepository(localRepo);

    // Generate Execution and Mojo for testing
    MojoExecution execution = mojoRule.newMojoExecution("SetRepositoryProperties");
    mojo = (SetRepositoryPropertiesMojo) mojoRule.lookupConfiguredMojo(session, execution);

  }

 /**
   * Generate a local repository
   * @return local repository object
   */
  private ArtifactRepository createLocalArtifactRepository() {
    return new MavenArtifactRepository("local",
        localRepoDir.toURI().toString(),
        new DefaultRepositoryLayout(),
        new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE ),
        new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE )

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

https://stackoverflow.com/questions/42216442

复制
相关文章

相似问题

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