我想以编程方式从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);
}
}
Run Code Online (Sandbox Code Playgroud)
这个论坛建议"只要看看你发布的表格,你应该能够制作一个cURL请求",这就是我做到这一点的目的.该发布至少开始.
我现在不知道如何逃避一切.浏览器将空格显示为"+",但如果我以这种方式发送数据则不起作用.事实上,"+","+"和"%20"都不是一个空间.
我仍然进入Unable to commit files构建,所以我很确定用户名/密码/注释前缀有问题.即使登录已发送,Jenkins本身也会返回登录页面("需要身份验证").
在Jenkins上触发Maven发布的正确方法是什么?
好的,我的旧方法中缺少的参数是:
writer.write("specifyScmCredentials=on&");
writer.write("specifyScmCommentPrefix=on&");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
784 次 |
| 最近记录: |