Linking Bintray Package to JCenter - bintray

I have a package in Bintray called "tripod" which is here:
https://bintray.com/bbende/bbende-maven/tripod
The tripod package is a Maven project with a standard multi-module setup where the root pom artifactId is tripod, with sub-modules of tripod-search-api, tripod-search-solr, and tripod-search-lucene.
In my personal Maven repo, all of these artifacts are published under the groupId com.bbende.tripod as shown here:
https://dl.bintray.com/bbende/bbende-maven/com/bbende/tripod/
When I requested to link the tripod package to JCenter using the link on the main package page for "tripod" it ended up linking only the artifact for the top-level pom as seen here:
http://jcenter.bintray.com/com/bbende/tripod/
How are you supposed to get the entire package linked to JCenter?
I believe this is the same issue here which looks like it requires manual intervention from someone at bintray/jcenter:
Bintray does not sync one of the artifacts of the package to the jcenter

A Bintray package is linked to jcenter with a specific path prefix, so that all submodules and versions under the base path will automatically be linked to jcenter without further manual intervention.
It seems like your package is linked under the base path containing only one of the submodules, therefore, the other submodules are not linked to jcenter.
In such cases, you should contact JFrog support in order to fix the inclusion path. In this case, we have already fixed it and all submodules are correctly linked to jcenter.
Best Regards,
Itamar

Related

Maven Central Repository Artifact Source Code / Project URL / License Identification

I'm new to working with Java and have questions regarding the Maven Central Repository. I am much more familiar with Python and PyPI, so I will provide the equivalent in PyPI that I would like to find in Maven.
How can I find the source code for the artifacts in Maven Central? Typically, I see the JAR file and prefer not to decompile these files. Typically, PyPI packages have the source file type in the "Download files" tab.
How can I find the associated project URL to a maven artifact? In PyPI, the package page has a set of project links and generally provides a repository link (e.g., Github, Bitbucket)
How can I identify open-source projects in the Maven central repository? The license for PyPI projects is tagged directly in the meta-reference on the sidebar of a project page.
I appreciate any insight into these questions. Thanks!
When a distributor decides to provide them, you can find -sources.jar and a -javadoc.jar files in the artifacts folder. (common IDE's are aware of that&provide buttons/menus, "Maven>Download XXX";)
like e.g. here
Artifact javadoc (for the sophisticated ones, javadoc and sources refers to the (common) "classifier" of the artifact)
how (easy) to produce them
In the pom:
project.url tag provides:
The project's home page.
project.scm element provides (should provide!) "source control" related (multiple) urls (read-only, contributer, public-browsing).
besides that many other things(and sub-things) can have url in a maven project/pom (distributionManagement(i.e repository), organisation, developer,...).
project.licenses element!
You can be sure to find all of these three (- four) in all (at least latest) artifacts in maven central, due to:
Their Publishing Requirements!;

Find all references of a dependency using maven or artifactory?

Let's say I have an internal library called superlibary.jar that is being stored in our local artifactory repo, and used by other in house applications ( also stored in artifactory). How can I use maven or the artifactory search feature to find all references to that jar?
I know about the maven dependency plugin which can be used to build a dependency tree. But this seems only be useful for determining the dependencies for the current app.
You can use the search functionality in Artifactory to find all the references of this JAR.
Since this is a Maven package you can do it with the quick search or maven package on the gavc cordinates.
Refer to this Doc: https://www.jfrog.com/confluence/display/JFROG/Application+Search

Bintray, JCenter, Maven, MavenCentral, OSSRH, Sonatype, Nexus, how are they all related?

I have a library shared in JCenter, which I post to through Bintray.
Recently, it is announced JCenter and Bintray are sunsetting, and many advised us to go to MavenCentral. I'm looking to move migrate it over.
Then I notice within the Bintray, it is stated my library is on Maven too, and the user can get my library using
maven {
url "https://dl.bintray.com/elye-project/maven"
}
So I'm confused, does that means I am already in Maven? Is this is just another name for JCenter and will not be available as well?
As I read more, I found an article stating we can publish our library from Bintray to MavenCentral too.
I also read if I need to submit my library to MavenCentral, I need to first create an issue in Sonatype.
Then I saw Sonatype is actually having Nexus Repository Manager. Then I find OSSRH uses Nexus Repository Manager.
I am super confused about what these terms are, and how are they related?
Bintray, JCenter, Maven, MavenCentral, OSSRH, Sonatype, Nexus.
Can someone give a brief description about them, and help to connect the dot for me?
MavenCentral is the place where Java open source artifacts should be published
JCenter was such a place.
Maven is a build system, not a repository. Many repositories have Maven format, which makes them readable from Maven and Gradle.
Sonatype Nexus and JFrog Artifactory are repository managers. You can install them to manage internal and external artifacts on your own server, which is advisable inside a company.

bintray - publishing multi-module Gradle artifacts to JCenter

my project is organized as a Gradle multi-project build with five Java modules/sub-projects. When building them, it results in five different JAR artifacts.
Four of those artifacts contain helper classes or small, isolated portions of code doing very specific things (for example efficient graph search that is optimised towards my specific use case domain). Only one project is the "main" artifiact that makes sense to use in a standalone way, but all five artifacts are required for it to run.
I would like to make this core artifact available to users, and I have been successful in uploading all five artifacts to a Bintray account. When mirroring to JCenter, I have two concerns:
Do I have to actively link all 5 projects to JCenter, or is there a way to only expose the "core" artifact to the general public?
What does the "Is Pom Project" checkbox do? As I understand it, Gradle creates POM files for every Maven publication artifact, so this box should always be checked for Maven-style builds. Is this correct?
(potential duplicate that does not contain a solution apart from "I work at Bintray and I fixed it for you in our system!": Linking Bintray Package to JCenter)
Thanks!
- Gregor
I hope I can answer all.
Do I have to actively link all 5 projects to JCenter, or is there a way to only expose the "core" artifact to the general public?
As the other answer you have attached says, it is linked on path level, this means that if you include org/worldcubeassociation/tnoodle/lib-scrambles/ as the path, then only those modules will be linked to Jcenter.
What does the "Is Pom Project" checkbox do? As I understand it, Gradle creates POM files for every Maven publication artifact, so this box should always be checked for Maven-style builds. Is this correct?
Yes, you are correct. The POM file is created and uploaded. You can see the POM file in your path.
For more information you can always check the central repositories guide.

Moving package between own repositories on bintray

My organization has several maven repositories on bintray. Most of these repositories contain a single package of the same name as the repository.
These packages seem highly related and I would like to reorganize them by creating a single repository and moving all these packages into it.
What is the best way to move packages between own repositories given the following constraints:
the package must remain available in the old repository as a link to the package in the new repository.
some of packages are linked to jcenter and they must remain linked after the moving.
I'll quote here a response from my conversation with JFrog support:
Since it is not possible to link a package from one repository to another within the same organisation, the best option would be to move these packages to the new repository while maintaining the link to jcenter. This leave the old repositories empty and then you would be able to delete them entirely. It is not possible to retain a link from the old repository to the new one.
Please notice that the move operation is an internal process and can only be done by us.
Unfortunately this approach doesn't satisfy my first requirement that the package must remain available for downloading from the old repository.

Resources