0

我们使用 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>

感谢任何指针。

谢谢

4

1 回答 1

1

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

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

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

在后一种情况下,您可以尝试将 Maven 指向 JIRA 的非 SSL 端口(如果您仍然<Connector>可以在 JIRA 的 conf/server.xml 中访问该端口),或者查看是否可以通过将证书添加到信任库来修复它由 Maven 使用。

我认为选项 #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 
于 2014-10-17T13:24:14.507 回答