2009-08-14 2 views
22

Google 코드에 작은 오픈 소스 프로젝트를 호스팅하고 있으며 공개적으로 액세스 할 수있는 Maven 저장소에 jar 파일을 제출해야합니다. 나는 Maven에 대한 실질적인 지식이 거의 없다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?Google 코드 프로젝트 용 Maven 저장소

내가 제출할 수있는 중앙 저장소가 있습니까? 아니면 내가 직접 호스트 할 수 있습니까? 항아리의 새로운 버전을 출시하고 싶다면 무엇을해야합니까?

저는 인터넷 검색을 해보았으며 멋지고 단순 해 보이는 this을 발견했습니다. 그러나 Maven의 정신과는 반대로 SVN에 jar 파일을 커밋하는 것 같습니다 :).

또한 Google 코드 에서처럼 다운로드 횟수를 추적 할 수있는 방법이 있습니까?

편집

내가 몇 가지 답변을 받았는데, 일부 내 pom.xml에 추가하는 것에 대한 힌트를 포함하는의. 고마워요! 하지만 분명히 한 가지 중요한 점을 언급하는 것을 잊어 버렸습니다. 빌드 스크립트는 ANT로되어 있으며, 그것을 퉁명스럽게 넣으려는 방식으로 계속 유지하려고합니다. :). Maven 사용자가 내 jar 파일을 자신의 프로젝트에 쉽게 포함시키고 싶습니다.


나는 결국 결국

에 함께 갔다 솔루션, 나는이 솔루션을 사용했다 I referenced 전에, 나는 단순히 SVN에 메이븐의 repo를 저지 곳. ANT 스크립트에서 Maven을 호출하여 로컬 저장소를 설정 한 다음 SVN을 호출하여 Google 코드에 커밋합니다. 관심있는 사람들을 위해 : 내 빌드 스크립트 here, publish-maven 대상을보십시오.

+0

어떤 오픈 소스 프로젝트가 그렇고이다? –

+0

@Bno는 http://code.google.com/p/equalsverifier/ – jqno

+0

thx를 참조하십시오. 정말 멋지다! –

답변

24

도움이 될 수 업로드하는 프로젝트에 대한 섹션이있는 guide to the central repository 있습니다. 그 밖의 것이 없다면 프로젝트에 대한 명명 규칙 및 최소한의 정보 요구 사항을 확인할 수 있습니다.

소나 타입 또한 OSS 저장소 호스팅을 수행합니다 (자세한 내용은 their guide 참조).

업데이트 : 당신이 빌드 프로세스를 변경해야한다는 말은 아닙니다. 앤트가 당신을 위해 일한다면 그것을 고수해야합니다. 빌드 방법에 관계없이 POM의 Maven 규칙을 따르는 것이 좋습니다. jar 파일을 Maven 저장소에 저장하는 것이 Maven 사용자가 액세스 할 수있게하는 것이므로 게시 된 이슈에 대한 POM을 정의해야합니다. 이름 지정 규칙을 따르면 사용자를 도울 수 있으므로 도움이 될 것입니다. 예를 들어, pom에 SCM 세부 정보를 추가하면 (다른 것들 중에서) 사용자가 Maven 용 IDE 통합을 사용하여 프로젝트를 작업 영역으로 가져올 수 있습니다.메이븐에 당신의 개미와 함께 구축 할 표준 메이븐

  • 는 메이븐 저장소를 설정합니다 (이미 제외) 메이븐 저장소에 구축 수행하고 사용

    1. :

      는 기본적으로, 4 가지 옵션이 있습니다 항아리와 POM을 전개하십시오. 메이븐 저장소를 설정

    2. 는 광고 유물
    3. 를 사용하여 서브 버전 "저장소"를 게시하는 개미 HTTP 작업을 사용하고 아티팩트를 게시 할 SvnAnt 작업을 사용

    옵션 1

    아티팩트를 빌드하고 배포하려면 Maven을 사용하십시오 (자세한 내용은 Maven book 및 위 링크를 참조하십시오).


    옵션 2

    당신이 당신의 항아리를 만드는 빌드 프로세스를 가정하고 POM을 정의했다, 당신의 최선의 방법은 위의 Sonatype OSS 저장소에 게시하는 것입니다. 메이븐은 플러그인의 배포 파일 목표를 배포하여 표준 메이븐 저장소에 기존의 항아리를 배포

    간단하다

  • 빌드 (A Jira request을 제기하여 Sonatype 서버에서 예) 저장소를 설정

      개미와 항아리.
    1. POM을 정의한 경우 JAR과 동일한 디렉토리에 배치하십시오.
    2. 실행 배포 파일 목표 :

      MVN의 배포 : 배포 파일 -Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -dfile = 경로 - 투 - 네 - 유물 항아리 \ - DpomFile = 경로 - 투 - 네 - pom.xml 파일

    참고 메이븐가 자동으로 [프로젝트 이름]에 pom.xml 파일 변환 할 목표를 배포하는 것이 - [버전] .pom합니다. 다른 두 가지 대안 중 하나를 수행하는 경우 최종 이름 (예 : [project-name] - [version] .pom)으로 POM을 커밋해야합니다. Maven 규칙에 따라 이슈에 대한 상대 경로를 작성해야합니다.

    예. 의 groupId = com.foo.bar, artifactId를 = 내 프로젝트 버전 = 1.0.0를 들어, 파일의 경로는 다음과 같습니다

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

    옵션 3

    당신이 원하는 경우 Ant를 사용하여 Maven 저장소에 배포하려면 Ant HTTP library을 사용할 수 있습니다 (참고로 직접 시도하지 않았습니다). 항아리 용과 POM 용의 두 가지 HTTP put 작업을 작성합니다.4

    완전히 메이븐을 방지하고 SVN 백업 저장소로 배포하는 Ant를 사용하려면

    <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> 
    

    옵션, 당신은 SvnAnt Subversion library를 사용할 수 있습니다.태스크를 구성하여 아티팩트를 원격 Subversion 저장소에 추가하기 만하면됩니다.

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

    감사합니다.이 게시물은 매우 유용했습니다. – javamonkey79

    1

    Maven 저장소가 maven deploy plugin을 지원하는지 확인하십시오. 이것은 가장 쉬운 방법 일 것입니다.

    대부분의 리포지토리는 ssh를 전송으로 사용합니다. 자세한 내용은 this을 참조하십시오. 이 설정이있어 일단

    , 당신이해야 할 것입니다 :

    mvn deploy:deploy 
    
    +0

    고마워! 재미 있네. 불행히도 빌드 스크립트는 ANT입니다. ANT와 유사한 플러그인이 있다고 가정하지 않습니까? :) – jqno

    7

    wagon-svn을 확인하십시오. Subversion 저장소에 '배포'할 수 있습니다. 조금 복잡하지만, 아무 것도없는 것보다 낫습니다. java.net에서이 프로젝트를 사용하는 몇 가지 프로젝트에 대해 알고 있으며 code.google.com에서이 프로젝트를 사용하는 일부 프로젝트를 발견했습니다.

    당신이 그것을 사용하려는 경우

    는, 당신은 먼저 확장으로 마차-svn을로드해야합니다 : 프로토콜 식별자 :

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

    다음, 당신은 SVN을 사용하여 배포 목표를 설정해야합니다. 다음은 인터넷에서 복사 한 예입니다.

    <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> 
    
    +0

    그래서 내 질문에 언급 한 블로그 게시물에 따라 SVN에 대한 배포 프로세스를 자동화하겠습니까? 나는 ANT에 대해서도 이와 비슷한 것이 있다고 가정하지 않는다. :)? – jqno

    +0

    Maven에 wagon-svn을 사용할 수 있습니다. 본격적인 Maven 프로젝트를 만들 필요가 없습니다. 배포를 위해 Maven POM을 생성하기 만하면됩니다. 따라서 Maven을 빌드 시스템에 사용하지 마십시오. Ant를 사용하여 JAR을 빌드 한 다음'mvn deploy : deploy-file'과 wagon-svn과 "svn maven repository"를 구성하는 적절한 POM을 사용하여 배치하십시오. –

    +0

    위의 wagon-svn 설정이 완료되지 않았 으면 java.net 저장소도 추가해야합니다. 자세한 내용은 다음을 참조하십시오. https://wagon-svn.dev.java.net/ –

    0

    당신은 당신의 pom.xml에서 https://clojars.org/

    로 항아리를 제출할 수 있습니다

    <repositories> 
        <repository> 
        <id>clojars.org</id> 
        <url>http://clojars.org/repo</url> 
        </repository> 
    </repositories> 
    
    관련 문제