Maven repository for Google Code project

微笑、不失礼 提交于 2019-11-28 16:14:37

There is a guide to the central repository that has a section on uploading projects that may help. If nothing else you can check the naming conventions and minimal information requirements against your project.

Sonatype also do OSS Repository hosting, see their guide for details.

Update: I'm not saying you should change your build process - if Ant works for you stick with it. It's worth following the Maven conventions in your POM regardless of your build method. As the point of putting your jar in a Maven repository is to make it accessible to Maven users, you will therefore need to define a POM for your published artifact. Following the naming conventions will help your users so you might as well do it. For example adding the SCM details to the pom will (amongst other things) allow your users to import the project into their workspace using the IDE integrations for Maven.

Basically, you have 4 options:

  1. Perform a standard Maven build against a Maven repository (already ruled out)
  2. Set up a Maven repository, do your builds with Ant, and use Maven to deploy the jar and POM.
  3. Set up a Maven repository, ad use an Ant HTTP task to publish the artifacts
  4. Use a Subversion "repository", and use the SvnAnt task to publish the artifacts

Option 1

Use Maven to build and deploy the artifacts (see the Maven book and the above links for details).


Option 2

Assuming you have a build process that creates your jar, and you've defined the POM, your best bet is to publish it to the Sonatype OSS repository as above.

Deploying an existing jar to a standard Maven repository is simple with the Maven deploy plugin's deploy-file goal:

  1. Set up your repository (e.g on the Sonatype servers by raising a Jira request)
  2. Build your jar with Ant.
  3. If you have defined a POM, put it in the same directory as the jar.
  4. Run the deploy-file goal:

    mvn deploy:deploy-file -Durl=http://path/to/your/repository\ -DrepositoryId=some.id \ -Dfile=path-to-your-artifact-jar \ -DpomFile=path-to-your-pom.xml

Note that the Maven deploy goal will automatically translate the pom.xml to [project-name]-[version].pom. If you are doing either of the other two alternatives, you will need to ensure you commit the POM with the final name, i.e. [project-name]-[version].pom. You'll also need to ensure you compose the relative paths for the artifacts following the Maven conventions.

E.g. for groupId=com.foo.bar, artifactId=my-project version=1.0.0, the path to the files will be:

/com/foo/bar/my-project/my-project-1.0.0.jar
/com/foo/bar/my-project/my-project-1.0.0.pom

Option 3

If you want to use Ant to deploy to a Maven repository, you can use an Ant HTTP library (Note I've not tried this myself) . You would compose two HTTP put tasks, one for the jar and one for the POM.

<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom">
  <userCredentials username="user" password="password"/>
</httpput>
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar">
  <userCredentials username="user" password="password"/>
</httpput>

Option 4

If you want to avoid Maven completely and use Ant to deploy to an SVN-backed repository, you can use the SvnAnt Subversion library. you would simply need to do configure the Svn import task to add your artifacts to the Remote Subversion repository.

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository"
    message="release"/>

Check wagon-svn. It will allow you to 'deploy' to a Subversion repository. It's a little convoluted, but it's better than nothing. I know of a few projects that use it at java.net, and I also came across some projects using it at code.google.com.

If you want to use it, then you first need to load wagon-svn as an extension:

  <build>
    ...
    <extensions>
      <extension>
        <groupId>org.jvnet.wagon-svn</groupId>
        <artifactId>wagon-svn</artifactId>
        <version>...</version>
      </extension>
    </extensions>

Next, you need to set your deployment targets using the svn: protocol identifier. Here's an example I copied from the Internet.

<distributionManagement>
    <repository>
        <id>maven-config-processor-plugin-repo-releases</id>
        <name>Maven Repository for Config Processor Plugin (releases)</name>
        <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/releases</url>
        <uniqueVersion>false</uniqueVersion>
    </repository>
    <snapshotRepository>
        <id>maven-config-processor-plugin-repo-releases</id>
        <name>Maven Repository for Config Processor Plugin (snapshots)</name>
        <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/snapshots</url>
        <uniqueVersion>false</uniqueVersion>
    </snapshotRepository>
</distributionManagement>

Check if the Maven repository support maven deploy plugin. This would be the easiest approach.

Most repositories uses ssh as the transport. See this for details.

Once it's setup, all you have to do is:

  mvn deploy:deploy

You can submit your jar to https://clojars.org/

In your pom.xml:

<repositories>
  <repository>
    <id>clojars.org</id>
    <url>http://clojars.org/repo</url>
  </repository>
</repositories>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!