আপনি করতে পারেন কোনোরকম কিছু ম্যাভেন সম্পর্কিত ব্যবহার না করেই এই কাজ। আমি ব্যক্তিগতভাবে জাং 6 সমর্থন করার জন্য নিং এইচটিপিপিলেট (v1.8.16) ব্যবহার করি।
যে কারণেই হোক না কেন, সুনাটাইপ সঠিক ইউআরএল, শিরোনাম এবং পে-লোডগুলি কী বলে মনে হচ্ছে তা নির্ধারণে অবিশ্বাস্যরূপে অসুবিধা সৃষ্টি করে; এবং আমাকে ট্র্যাফিক স্নিগ্ধ করতে হয়েছিল এবং অনুমান করতে হয়েছিল ... সেখানে কিছু সবেমাত্র দরকারী ব্লগ / ডকুমেন্টেশন রয়েছে তবে এটি হয় অপ্রাসঙ্গিক oss.sonatype.org
, বা এটি এক্সএমএল ভিত্তিক (এবং আমি জানতে পেরেছিলাম এটি এমনকি কার্যকর হয় না)। আইএমএইচও, এবং আশা করি ভবিষ্যতের সন্ধানকারীরা এই উত্তরটি দরকারী বলে খুঁজে পেতে পারেন document তাদের পোস্টের জন্য https://stackoverflow.com/a/33414423/2101812 কে অনেক ধন্যবাদ , কারণ এটি অনেক সহায়তা করেছে।
যদি আপনি ব্যতীত অন্য কোথাও মুক্তি পান oss.sonatype.org
তবে সঠিক হোস্টটি যা-ই হোক, কেবল এটির সাথে প্রতিস্থাপন করুন।
এটি সম্পাদন করার জন্য আমি এখানে লিখেছি (সিসি0 লাইসেন্সযুক্ত) কোড is কোথায় profile
আপনার sonatype / Nexus profileID (যেমন হয় 4364f3bbaf163
) এবং repo
(যেমন comdorkbox-1003
) প্রতিক্রিয়া যখন আপনি আপনার প্রাথমিক খুলুন POM / জার আপলোড থেকে পার্স করা হয়।
বন্ধ
/**
* Closes the repo and (the server) will verify everything is correct.
* @throws IOException
*/
private static
String closeRepo(final String authInfo, final String profile, final String repo, final String nameAndVersion) throws IOException {
String repoInfo = "{'data':{'stagedRepositoryId':'" + repo + "','description':'Closing " + nameAndVersion + "'}}";
RequestBuilder builder = new RequestBuilder("POST");
Request request = builder.setUrl("https://oss.sonatype.org/service/local/staging/profiles/" + profile + "/finish")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Basic " + authInfo)
.setBody(repoInfo.getBytes(OS.UTF_8))
.build();
return sendHttpRequest(request);
}
রেপো প্রচার করুন:
/**
* Promotes (ie: release) the repo. Make sure to drop when done
* @throws IOException
*/
private static
String promoteRepo(final String authInfo, final String profile, final String repo, final String nameAndVersion) throws IOException {
String repoInfo = "{'data':{'stagedRepositoryId':'" + repo + "','description':'Promoting " + nameAndVersion + "'}}";
RequestBuilder builder = new RequestBuilder("POST");
Request request = builder.setUrl("https://oss.sonatype.org/service/local/staging/profiles/" + profile + "/promote")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Basic " + authInfo)
.setBody(repoInfo.getBytes(OS.UTF_8))
.build();
return sendHttpRequest(request);
}
ড্রপ রেপো:
/**
* Drops the repo
* @throws IOException
*/
private static
String dropRepo(final String authInfo, final String profile, final String repo, final String nameAndVersion) throws IOException {
String repoInfo = "{'data':{'stagedRepositoryId':'" + repo + "','description':'Dropping " + nameAndVersion + "'}}";
RequestBuilder builder = new RequestBuilder("POST");
Request request = builder.setUrl("https://oss.sonatype.org/service/local/staging/profiles/" + profile + "/drop")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Basic " + authInfo)
.setBody(repoInfo.getBytes(OS.UTF_8))
.build();
return sendHttpRequest(request);
}
স্বাক্ষর টার্ডগুলি মুছুন:
/**
* Deletes the extra .asc.md5 and .asc.sh1 'turds' that show-up when you upload the signature file. And yes, 'turds' is from sonatype
* themselves. See: https://issues.sonatype.org/browse/NEXUS-4906
* @throws IOException
*/
private static
void deleteSignatureTurds(final String authInfo, final String repo, final String groupId_asPath, final String name,
final String version, final File signatureFile)
throws IOException {
String delURL = "https://oss.sonatype.org/service/local/repositories/" + repo + "/content/" +
groupId_asPath + "/" + name + "/" + version + "/" + signatureFile.getName();
RequestBuilder builder;
Request request;
builder = new RequestBuilder("DELETE");
request = builder.setUrl(delURL + ".sha1")
.addHeader("Authorization", "Basic " + authInfo)
.build();
sendHttpRequest(request);
builder = new RequestBuilder("DELETE");
request = builder.setUrl(delURL + ".md5")
.addHeader("Authorization", "Basic " + authInfo)
.build();
sendHttpRequest(request);
}
ফাইল আপলোড:
public
String upload(final File file, final String extension, String classification) throws IOException {
final RequestBuilder builder = new RequestBuilder("POST");
final RequestBuilder requestBuilder = builder.setUrl(uploadURL);
requestBuilder.addHeader("Authorization", "Basic " + authInfo)
.addBodyPart(new StringPart("r", repo))
.addBodyPart(new StringPart("g", groupId))
.addBodyPart(new StringPart("a", name))
.addBodyPart(new StringPart("v", version))
.addBodyPart(new StringPart("p", "jar"))
.addBodyPart(new StringPart("e", extension))
.addBodyPart(new StringPart("desc", description));
if (classification != null) {
requestBuilder.addBodyPart(new StringPart("c", classification));
}
requestBuilder.addBodyPart(new FilePart("file", file));
final Request request = requestBuilder.build();
return sendHttpRequest(request);
}
EDIT1:
কীভাবে কোনও রেপোর জন্য ক্রিয়াকলাপ / স্থিতি পাবেন
/**
* Gets the activity information for a repo. If there is a failure during verification/finish -- this will provide what it was.
* @throws IOException
*/
private static
String activityForRepo(final String authInfo, final String repo) throws IOException {
RequestBuilder builder = new RequestBuilder("GET");
Request request = builder.setUrl("https://oss.sonatype.org/service/local/staging/repository/" + repo + "/activity")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Basic " + authInfo)
.build();
return sendHttpRequest(request);
}