Sunset on May 1st: Bintray, JCenter

cool, but how it will look in Gradle?

looking at site, it sounds complicated and require some access:
https://central.sonatype.org/pages/gradle.html

because for maven its just mavenCentral() and @destroflyer say its not so hard to update once group is accepted.

Iā€™ve discovered that BinTray has a web interface for synching repos to MavenCentral. When I clicked on the ā€œMavenCentralā€ link for jme3-core, it brought up a form with ā€œdavidBā€ in the ā€œUser token keyā€ field.

@david_bernard_31 does JMonkeyEngine have some history with MavenCentral?

I thought it did and looked for it the other data and couldnā€™t find it. I must be blindā€¦ can you give me a hint?

Edit: Iā€™ve also discovered that bintray does things to prevent web crawlers from downloading entire directoriesā€¦which is going to be a pain if we have to grab all of the existing versions to move somewhere else. :-/

1 Like

1 Like

I must have done something weird sometime because it keeps redirecting me to a beta style link:

https://bintray.com/beta/#/jmonkeyengine/org.jmonkeyengine/jme3-core?tab=overview

ā€¦that has a different view and does not have that option.

1 Like

Betanik! :wink:

Do you have a ā€œGo To Old Lookā€ button in the green bar at the top of the page?

THANK YOU!

ā€¦is a complete sentence, forum.

1 Like

I was looking at this to find the easiest way to move my Simsilica projects over to maven centralā€¦ but one of the hoops to jump through is that all dependencies must be in maven central.

So I will have to wait until JME has been moved. (Turns out I already have a sonatype account from when I started to try to get the OpenGEX stuff into maven central before abandoning the idea.)

2 Likes

I tried using the BinTray web interface to synch jme3-core to MavenCentral (with my personal Sonatype credentials) and got an ā€œAuthentication failedā€ error.

I just checked on the status of my OSSRH ticket to create a new project for the Heart library. No activity.

Today I created a PGP key pair and uploaded my public key to a key server. I also learned how to sign Maven artifacts using the ā€œgpg2ā€ command. Next step: automate this as part of my build process. (This is for my personal projects; the JME libraries at JCenter are already signed.)

1 Like

Iā€™m going to be honest about where I sit at the moment.

Item 1 or 2 in the ā€œrequirements for maven centralā€ is that all dependencies of said project are also in maven central. All of my libraries depend on JMEā€¦ so until JME is in maven central, I donā€™t meet the requirements to get my projects into maven central right off the starting line.

I personally donā€™t have the bandwidth to decipher JMEā€™s build and figure out how to shuffle all of it over to maven central, requisite hoops, proving ownership of domain, move existing versions, etc., etc.

Hopefully someone else is willing to carry that water. Hopefully those of us with dependent projects can learn from that experience.

Until then, Iā€™m going to manually download all of my projectā€™s versions, poms, etc. from bintray since they prevent crawling and have no ā€˜download allā€™ button. Thatā€™s probably like an hour of wasted time right there. But then Iā€™ll have them if someday a solution shows up.

1 Like

Iā€™m looking at the list of requirements, and I donā€™t see any indication that all dependencies have to be in Maven Central.

I see somewhat conflicting things:

On this page: Maven ā€“ Guide to uploading artifacts to the Central Repository

releases: Only releases can be uploaded to the Central Repository, that means files that wonā€™t change and that only depend on other files already released and available in the repository,

But further down in the FAQ section it says:

I have other repositories or pluginRepositories listed in my POM, is that a problem?

At present, this wonā€™t preclude your project from being included, but we do strongly encourage making sure all your dependencies are included in the Central Repository. If you rely on sketchy repositories that have junk in them or disappear, it just creates havok for downstream users. Try to keep your dependencies among reliable repos like Central, Jboss, etc.

The takeaway is that they need to be ā€˜somewhereā€™ā€¦ and soon JME wonā€™t be anywhere.

ā€¦and using maven in my day job and dealing with all of the pain of hundreds of complicated dependencies, some of which use custom repos, I vowed never to do that to my users.

Maven artifacts have one advantage: they are automatic. They have lots of disadvantages, not the least of which is that you can end up in version hell where some dependency has sucked in the whole world and dependency X now depends on the wrong version of dependency Yā€¦ and Zā€¦ and Qā€¦ So you spend days sorting out which version needs to be upgraded to what. In the mean time, checking jars into a lib directory in your repo would have none of those issues.

So the further maven-style repos get from being automatic, the more it turns into an Olympic swimming pool full of poop.

Better to just download the jars when you want to update at that pointā€¦ a super pain in the ass with maven, a one line add to a gradle build.

1 Like

AFAIK last time (a bunch of years ago) when central was dicussed nifty was not on central, and if i remember correctly was the showstopper

1 Like

Itā€™s probably time to move nifty over to jme contrib and avoid this issueā€¦ similar to what is planned for bullet.

2 Likes

I donā€™t share your pessimism. Currently JME is on JCenter and Bintray, and soon it will be on MavenCentral. Or else weā€™ll set up our own ā€œsketchy repositoryā€ ā€” @RiccardoBlb has already taken steps in that direction for things like jme3-testdata. A lot can happen in 83 days.

AFAIK last time (a bunch of years ago) when central was dicussed nifty was not on central, and if i remember correctly was the showstopper

Thanks for the heads-up. Iā€™ll keep that in mind.

Iā€™ve configured a minio object storage instance here: https://objects.jmonkeyengine.org , with two public buckets:

Iā€™ve already configured the step to upload to artifacts.jmonkeyengine.org, Iā€™ve also prepared the step to upload to mavenCentral here: jmonkeyengine/main.yml at master Ā· riccardobl/jmonkeyengine Ā· GitHub

The idea is that we have a ./dist/mavenCentral folder with all the artifacts in their path, we call rm to delete the artifacts we canā€™t put on maven central and then we will have some sort of iteration through all the files to upload them to central (i guess some form of gnu-find + mvn deploy-file ).

Thatā€™s basically what we do with bintray, the only difference is that we use curl right now, but to upload to central we should probably use mvn, since they require some extra data from what iā€™m understanding (i still have to look into that).

This is the last step to complete, then the engine will be migrated out of bintray.

4 Likes

Thanks, Ricc.

Iā€™ve seen links to tutorials on how to upload from gradle so I assume itā€™s possible. (No one I know would maintain a separate maven build by choice.)

We will also need to figure out a way to move all of our current versions over. I donā€™t know if your approach automatically covers that or not.

1 Like

Yes, but until JME is in its ā€˜forever homeā€™ then it doesnā€™t make sense for other libraries to post ā€˜builds that will eventually be brokenā€™ that have ā€˜sketchy repository links that will changeā€™.

It seems like we will eventually be in maven central so that at least alleviates the most major concerns.

1 Like

If I understood correctly, Nifty is now on Maven central. I saw current and the previous version there.

2 Likes

Found it:

2 Likes