当前位置: 首页 > 面试题库 >

远程触发Maven发布

姬温文
2023-03-14
问题内容

我想以编程方式从Java程序启动Maven发行版。该网页显示了一般的操作方法。这就是我所做的:

    final URL url = new URL("http://jenkins/job/MyProject/m2release/submit");

    final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("POST"); 
    urlConnection.setDoOutput(true);

    final String userpass = "User:Password";
    final String authentication = "Basic " + DatatypeConverter.printBase64Binary(userpass.getBytes());
    urlConnection.setRequestProperty("Authorization", authentication);

    try (final OutputStream os = urlConnection.getOutputStream();
            final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));) {
        writer.write("releaseVersion=1.2.3&");
        writer.write("developmentVersion=1.2.4-SNAPSHOT&");
        // writer.write("isDryRun=on&"); // uncomment for dry run
        writer.write("scmUsername=User&");
        writer.write("scmPassword=Password&");
        writer.write("scmCommentPrefix=[test]&");
        writer.write("json={\"releaseVersion\":\"1.2.3\",\"developmentVersion\":\"1.2.4-SNAPSHOT\",\"isDryRun\":false}&");
        writer.write("Submit=Schedule Maven Release Build");

        writer.flush();
    }

    urlConnection.connect();

    try (BufferedReader reader = new BufferedReader(
            new InputStreamReader(urlConnection.getInputStream(), "UTF-8"))) {
        for (String line; (line = reader.readLine()) != null;) {
            System.out.println(line);
        }
    }

该论坛建议“在发布之前,请先查看一下表格,您就应该能够提出cURL请求”,这就是我所做的。发行至少开始。

我现在不知道如何逃避一切。浏览器将空格显示为“ +”,但是如果我以这种方式发送数据,它将无法正常工作。实际上,“”,“ +”或“%20”都不用作空格。

我仍然可以Unable to commit files进入构建,因此我可以肯定用户名/密码/注释前缀有问题。即使已发送登录,Jenkins本身也会返回登录页面(“需要身份验证”)。

在Jenkins上触发Maven版本的正确方法是什么?


问题答案:

好的,我的旧方法中缺少的参数是:

writer.write("specifyScmCredentials=on&");
writer.write("specifyScmCommentPrefix=on&");


 类似资料:
  • 我试图通过在提交钩子中使用这个URL来触发我的Jenkins项目 而且不会被触发。但当我在web浏览器中键入此URL时,它会触发我的生成。 当我在命令提示符下尝试时,出现了一个错误 错误404 谁能告诉我我做错了什么??

  • 问题内容: 当我尝试使用以下命令触发构建时,出现以下错误: 卷曲http:// jenkins_server:port / jenkins / job / job_name / build?token = token_name 输出: 需要验证 <-您的身份验证为:您所在的匿名 组: 权限,你需要有(但没有):hudson.model.Hudson.Read …这是暗示:hudson.securi

  • 问题内容: 我试图通过在提交钩子中使用此URL来触发我的Jenkins项目 并且没有被触发。但是,当我在Web浏览器中键入此URL时,它将触发我的构建。 当我在命令提示符下尝试时,出现错误 错误404 例外: Stacktrace: 由Winstone Servlet Engine v0.9生成。 2014年4月22日星期二10:10:10 有人可以告诉我我在做什么错吗? 问题答案: 首先,按照E

  • 缓存脱机/远程开发的所有依赖项。记录在https://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html 但是,我们怎样才能再次回到网络上呢? 不是一个有效的目标。 谢谢

  • 问题内容: 我正在通过http POST请求从jenkins外部触发参数化的Jenkins: 我在作业配置中启用了可以从外部触发作业的功能,并且我可以通过向詹金斯发送包含以下内容的请求来真正触发它: POST http://myJenkins.com/myJob/buildWithParameters?token=MYTOKEN 参数:SCREEN_SIZE:27 触发作业创建将返回成功的201

  • 有的时候,我们需要从Go程序里面触发一个其他的非Go进程来执行。 package main import "fmt" import "io/ioutil" import "os/exec" func main() { // 我们从一个简单的命令开始,这个命令不需要任何参数 // 或者输入,仅仅向stdout输出一些信息。`exec.Command` // 函数创建了一个代表