문제

저는 Google Code에서 소규모 오픈 소스 프로젝트를 호스팅하고 있는데 공개적으로 액세스할 수 있는 Maven 저장소에 해당 jar를 제출하라는 요청을 받았습니다.나는 Maven에 대한 실질적인 지식이 거의 없습니다.이를 수행하는 가장 좋은 방법은 무엇입니까?

제출할 수 있는 중앙 저장소가 있습니까? 아니면 직접 호스팅할 수 있습니까?jar의 새 버전을 출시하려면 어떻게 해야 합니까?

구글링해서 찾았어요 이것, 멋지고 단순해 보이지만 조금은...Maven의 정신에 반하여 jar 파일을 SVN에 커밋합니다 :).

또한 Google Code처럼 다운로드 횟수를 계속 추적할 수 있는 방법이 있을까요?

편집하다

나는 몇 가지 답변을 얻었으며 그 중 일부에는 내 질문에 추가할 내용에 대한 힌트가 포함되어 있습니다. pom.xml.고마워요!그러나 분명히 나는 ​​한 가지 중요한 사실을 언급하는 것을 잊었습니다.내 빌드 스크립트는 ANT에 있고, 직설적으로 말하면 그렇게 유지할 생각입니다 :).나는 Maven 사용자가 자신의 프로젝트에 내 jar을 더 쉽게 포함할 수 있도록 만들고 싶습니다.


결국 내가 선택한 해결책

결국 나는 내가 사용한 솔루션을 사용했습니다. 참조됨 이전에는 Maven 저장소를 SVN에 커밋했습니다.ANT 스크립트에서 Maven을 호출하여 로컬 저장소를 설정한 다음 SVN을 호출하여 Google 코드에 커밋합니다.관심 있는 분들을 위해:내 빌드 스크립트를 봐 여기, 에서 publish-maven 표적.

도움이 되었습니까?

해결책

이있다 중앙 저장소 안내 도움이 될 수 있는 프로젝트 업로드 섹션이 있습니다.다른 것이 없다면 프로젝트에 대한 명명 규칙과 최소 정보 요구 사항을 확인할 수 있습니다.

Sonatype은 OSS 저장소 호스팅도 수행합니다. 그들의 가이드 자세한 내용은.

업데이트:나는 빌드 프로세스를 변경해야 한다고 말하는 것이 아닙니다. Ant가 작동한다면 이를 고수하십시오.빌드 방법에 관계없이 POM에서 Maven 규칙을 따르는 것이 좋습니다.Maven 저장소에 jar를 넣는 이유는 Maven 사용자가 해당 jar에 액세스할 수 있도록 하기 위한 것이므로 게시된 아티팩트에 대한 POM을 정의해야 합니다.명명 규칙을 따르면 사용자에게 도움이 되므로 그렇게 하는 것이 좋습니다.예를 들어 SCM 세부 정보를 pom에 추가하면 사용자가 Maven용 IDE 통합을 사용하여 프로젝트를 작업 공간으로 가져올 수 있습니다.

기본적으로 4가지 옵션이 있습니다.

  1. Maven 저장소에 대해 표준 Maven 빌드 수행(이미 제외됨)
  2. Maven 저장소를 설정하고, Ant로 빌드를 수행하고, Maven을 사용하여 jar 및 POM을 배포합니다.
  3. Maven 저장소를 설정하고 Ant HTTP 작업을 사용하여 아티팩트를 게시합니다.
  4. Subversion "저장소"를 사용하고 SvnAnt 작업을 사용하여 아티팩트 게시

옵션 1

Maven을 사용하여 아티팩트를 빌드하고 배포합니다(참조: 메이븐북 자세한 내용은 위의 링크를 참조하세요).


옵션 2

jar을 생성하는 빌드 프로세스가 있고 POM을 정의했다고 가정하면, 가장 좋은 방법은 위와 같이 이를 Sonatype OSS 저장소에 게시하는 것입니다.

Maven 배포 플러그인의 배포 파일 목표를 사용하면 기존 jar를 표준 Maven 저장소에 배포하는 것이 간단합니다.

  1. 저장소를 설정합니다(예: Sonatype 서버에서 Jira 요청)
  2. Ant로 항아리를 만들어 보세요.
  3. POM을 정의했다면 jar와 동일한 디렉토리에 넣으세요.
  4. 배포 파일 목표를 실행합니다.

    mvn 배포:배포 파일 -Durl=http://경로/to/your/repository-drepositoryId = some.id -dfile = Path-to-artifact-jar -dpomfile = path-to-your-pom.xml

Maven 배포 목표는 pom.xml을 [project-name]-[version].pom으로 자동 변환합니다.다른 두 가지 대안 중 하나를 수행하는 경우 최종 이름으로 POM을 커밋해야 합니다.[프로젝트명]-[버전].pom.또한 Maven 규칙에 따라 아티팩트의 상대 경로를 구성해야 합니다.

예:groupId=com.foo.bar, ArtifactId=my-project version=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 저장소에 배포하려면 다음을 사용할 수 있습니다. 개미 HTTP 라이브러리 (참고로 나는 이것을 직접 시도하지 않았습니다).두 개의 HTTP Put 작업을 구성합니다. 하나는 jar용이고 다른 하나는 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>

옵션 4

Maven을 완전히 피하고 Ant를 사용하여 SVN 지원 저장소에 배포하려면 다음을 사용할 수 있습니다. SvnAnt Subversion 라이브러리.간단히 구성하면 됩니다. Svn 가져오기 원격 Subversion 저장소에 아티팩트를 추가하는 작업입니다.

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

다른 팁

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

이를 사용하려면 먼저 wagon-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>

Maven 저장소 지원 여부 확인 메이븐 배포 플러그인.이것이 가장 쉬운 접근 방법이 될 것입니다.

대부분의 저장소는 SSH를 전송 수단으로 사용합니다.보다 이것 자세한 내용은.

설정이 완료되면 해야 할 일은 다음과 같습니다.

  mvn deploy:deploy

당신은 당신의 항아리를 제출할 수 있습니다 https://clojars.org/

당신의 pom.xml:

<repositories>
  <repository>
    <id>clojars.org</id>
    <url>http://clojars.org/repo</url>
  </repository>
</repositories>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top