【问题标题】:maven-changes-plugin error: "This JIRA server does not support version 2 of the REST API"maven-changes-plugin 错误:“此 JIRA 服务器不支持版本 2 的 REST API”
【发布时间】:2014-10-17 00:01:55
【问题描述】:

我们使用 maven-changes-plugin 来生成发布公告。不幸的是,“mvn changes:jira-report”命令返回“回退到 RSS 以进行问题下载:此 JIRA 服务器不支持 maven-changes-plugin 需要的 REST API 版本 2。”。请查看下面的命令错误日志:

[INFO] Falling back to RSS for issue download: This JIRA server does not support version 2 of the REST API, which maven-changes-plugin requires.
[WARNING] Unable to respond to any of these challenges: {oauth=OAuth realm="https%3A%2F%2Fjira.myjira.com%3A8443"}
[INFO] Downloading from JIRA at: https://jira.myjira.com/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?tempMax=100&reset=true&jqlQuery=project+%3D+CP+AND+fixVersion+%3D+%223.2.1-alpha-4%22+AND+status+in+%28Closed%29+AND+resolution+in+%28Fixed%29+ORDER+BY+priority+DESC%2C+created+DESC
[WARNING] Unable to respond to any of these challenges: {oauth=OAuth realm="https%3A%2F%2Fjira.myjira.com%3A8443"}
[WARNING] Downloading from JIRA failed. Received: [401]
[WARNING] JIRA file /Users/jay/3.2.1-alpha/marketplace/target/jira-results.xml doesn't exist.
[WARNING]
org.apache.maven.plugin.MojoExecutionException: Couldn't find any issues for the version '3.2.1-alpha-4' among the supplied issues: []
        at org.apache.maven.plugin.issues.IssueUtils.getIssuesForVersion(IssueUtils.java:119)
        at org.apache.maven.plugin.jira.JiraMojo.executeReport(JiraMojo.java:387)
        at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:255)
        at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:210)
        at org.apache.maven.plugin.changes.AbstractChangesReport.execute(AbstractChangesReport.java:207)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

环境信息

JIRA Standalone 5.2.5
maven-changes-plugin v2.11

pom.xml 摘录

<issueManagement>
    <system>JIRA</system>
    <url>https://jira.myjira.com:8443/browse/CP</url>
  </issueManagement>
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.11</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>announcement-generate</goal>
                </goals>
                <id>announcement-generate</id>
            </execution>
            <execution>
                <phase>deploy</phase>
                <goals>
                    <goal>announcement-mail</goal>
                </goals>
                <id>announcement-mail</id>
            </execution>
        </executions>
        <configuration>
            <useJql>true</useJql>
          <jiraUser>xxx</jiraUser>
            <jiraPassword>xxx</jiraPassword>
            <webUser>xxx</webUser>
            <webPassword>xxx</webPassword>
          <onlyCurrentVersion>true</onlyCurrentVersion>
            <smtpHost>relay.edsmtp.net</smtpHost>
          <smtpPort implementation="java.lang.Integer">25</smtpPort>
          <toAddresses>
            <toAddress implementation="java.lang.String">to@email.com</toAddress>
          </toAddresses>
          <mailSender>
            <name>Release Notification</name>
            <email>projectupdates@email.com</email>
          </mailSender>
          <issueManagementSystems>
            <issueManagementSystem>JIRA</issueManagementSystem>
          </issueManagementSystems>
        </configuration>
      </plugin>
<reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.11</version>
        <configuration>
          <useJql>true</useJql>
          <jiraUser>xxx</jiraUser>
            <jiraPassword>xxx</jiraPassword>
            <webUser>xxx</webUser>
            <webPassword>xxx</webPassword>
          <onlyCurrentVersion>true</onlyCurrentVersion>
          <resolutionIds>Unresolved</resolutionIds>
          <statusIds>Open</statusIds>
          <typeIds>Bug, New Feature, Improvement</typeIds>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>jira-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

感谢任何指针。

谢谢

【问题讨论】:

    标签: jira jira-rest-api maven-changes-plugin


    【解决方案1】:

    您收到该错误是因为它尝试访问的第一个 REST 方法 (https://myjiraserver/rest/api/2/serverInfo) 在尝试访问资源时未返回 HTTP 200。

    您的 JIRA 版本应该支持 v2 的 REST API,因此您可能会因为以下原因之一而收到该错误:

    1. 您向 Maven 提供了错误的 URL(可能缺少上下文路径?),或者
    2. 您是否在服务器上使用了可能会干扰客户端连接能力的自签名 SSL 证书?

    在后一种情况下,您可以尝试将 Maven 指向 JIRA 的非 SSL 端口(如果您仍然可以在 JIRA 的 conf/server.xml 中访问 &lt;Connector&gt;),或者看看您是否可以通过 @ 修复它Maven 使用的 987654321@。

    我认为选项 #2 不太可能,因为如果存在证书验证问题,我希望 WebClient 库会抛出异常,但我承认我还没有深入研究它的 API 来弄清楚它到底做了什么那个场景。

    来自https://maven.apache.org/plugins/maven-changes-plugin/xref/org/apache/maven/plugin/jira/RestJiraDownloader.html

    105         Map<String, String> urlMap = JiraHelper.getJiraUrlAndProjectName( project.getIssueManagement().getUrl() );
    106         String jiraUrl = urlMap.get( "url" );
    107         jiraProject = urlMap.get( "project" );
    108 
    109         // This classloader juggling is a workaround for a classic Maven 2 class loader management bug.
    110         ClassLoader ccl = Thread.currentThread().getContextClassLoader();
    111         try
    112         {
    113             Thread.currentThread().setContextClassLoader( WebClient.class.getClassLoader( ) );
    114             WebClient client = setupWebClient( jiraUrl );
    115 
    116             // We use version 2 of the REST API, that first appeared in JIRA 5
    117             // Check if version 2 of the REST API is supported
    118             // http://docs.atlassian.com/jira/REST/5.0/
    119             // Note that serverInfo can always be accessed without authentication
    120             client.replacePath( "/rest/api/2/serverInfo" );
    121             client.accept( MediaType.APPLICATION_JSON );
    122             Response siResponse = client.get();
    123             if ( siResponse.getStatus() != Response.Status.OK.getStatusCode() )
    124             {
    125                 throw new NoRest(
    126                     "This JIRA server does not support version 2 of the REST API, which maven-changes-plugin requires." );
    127             }
    128 
    

    【讨论】:

    • 谢谢@scott-dudley。我实际上遇到了选项#2。我通过将证书添加到信任库来修复它。我在上面编辑了我的帖子,还包括了必要的 JIRA 条目。提供给 Maven 的 URL 在我看来是正确的。
    • 这是否意味着您通过选项 #2 让它工作? (或者你在发帖之前就这样做了,但它仍然坏了?)
    • 发帖前做了选项#2。
    • 发现问题是密码错误。很抱歉带你经历这一切。这真的是我的垃圾:)
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多