2009-08-14 13 views
22

Jestem gospodarzem małego projektu open source w Google Code, a ja zostałem poproszony o przesłanie słoika do publicznie dostępnego repozytorium Maven. Nie mam praktycznie żadnej praktycznej wiedzy o Mavenie. Jaki byłby najlepszy sposób na zrobienie tego?Repozytorium Maven dla projektu Google Code

Czy istnieje jakieś centralne repozytorium, do którego mogę się zgłosić, czy mogę udostępnić własne? Co powinienem zrobić, gdy chcę wydać nową wersję słoika?

Byłem Googling i znalazł this, która wygląda ładne i proste, ale wydaje się nieco ... sprzecznego z duchem Maven, popełnieniem pliki jar do SVN :).

Ponadto, czy istnieje sposób, aby nadal śledzić liczbę pobrań, tak jak robi to Google Code?

EDIT

ja dostaję jakieś odpowiedzi, z których zawierający wskazówki, co dodać do mojego pom.xml niektórych. Dzięki chłopaki! Ale oczywiście zapomniałem wspomnieć o jednej ważnej rzeczy: mój skrypt budowy jest w ANT, i mówiąc wprost, zamierzam zachować to w ten sposób :). Po prostu chcę ułatwić użytkownikom Mavena dołączenie mojego słoika do swoich projektów.


Roztwór poszedłem z w końcu

W końcu zrobiłem użyć roztworu I referenced wcześniej, gdzie po prostu popełnić Maven repo do SVN. Mam skrypt ANT zadzwonić do Mavena, aby skonfigurować lokalne repozytorium, a następnie zadzwonić do SVN, aby zatwierdzić go w Google Code. Dla zainteresowanych: spójrz na mój skrypt budowy here, w celu publish-maven.

+0

Który projekt open source jest to, że przy okazji? –

+0

@Nie zobacz http://code.google.com/p/equalsverifier/ – jqno

+0

thx, wygląda naprawdę fajnie! –

Odpowiedz

24

Jest guide to the central repository że posiada sekcję na przesyłanie projektów, które mogą pomóc. Jeśli nic więcej, możesz sprawdzić konwencje nazewnictwa i minimalne wymagania informacyjne w stosunku do twojego projektu.

Sonatype również zrobić OSS Repository gospodarzem, zobacz their guide szczegóły.

Aktualizacja: Nie mówię, że powinieneś zmienić swój proces budowania - jeśli Ant działa, trzymaj się go. Warto przestrzegać konwencji Maven w POM niezależnie od metody budowania. Ponieważ umieszczenie twojego słoika w repozytorium Maven ma na celu udostępnienie go użytkownikom Mavena, będziesz musiał zdefiniować POM dla twojego opublikowanego artefaktu. Zgodnie z konwencjami nazewnictwa pomoże to użytkownikom, więc równie dobrze można to zrobić. Na przykład dodanie szczegółów SCM do pom (między innymi) pozwoli użytkownikom zaimportować projekt do swojego obszaru roboczego za pomocą integracji IDE dla Maven.

Zasadniczo masz 4 opcje:

  1. wykonać standardową Maven budować przeciwko repozytorium Maven (już wykluczyć)
  2. Konfigurowanie repozytorium Maven, wykonać buduje z Ant i użyć Maven do wdrożyć słoik i POM.
  3. Konfigurowanie repozytorium Maven, ad użyć Ant zadanie HTTP publikowania artefakty
  4. użyć Subversion "repozytorium" i użyć zadania SvnAnt opublikować artefakty

Wariant 1

Użyj Mavena, aby zbudować i rozmieścić artefakty (patrz Maven book i powyższe linki, aby uzyskać szczegółowe informacje).


Opcja 2

Zakładając, że proces budowania, który tworzy swój dzban, i pan zdefiniował POM, najlepiej jest, aby opublikować go do repozytorium Sonatype OSS jak wyżej.

Wdrażanie istniejącej jar standardowym repozytorium Maven jest prosta z Maven wdrażać Deploy-file cel pluginu:

  1. Konfigurowanie repozytorium (np na serwerach Sonatype podnosząc Jira request)
  2. Zbuduj twój słoik z Ant.
  3. Jeśli zdefiniowałeś POM, umieść go w tym samym katalogu co słoik.
  4. Run Celem Deploy-file:

    mvn deploy: wdrożyć plik -Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -dfile = ścieżka-do-your-artefakt-jar \ - DpomFile = ścieżka-do-your-pom.xml

Zauważ, że Maven wdrażać cel zostanie automatycznie przełoży pom.xml na [nazwa-projektu] - [version] .pom. Jeśli wykonujesz jedną z dwóch pozostałych opcji, musisz upewnić się, że zatwierdziłeś POM z ostateczną nazwą, tj. [Nazwa-projektu] - [wersja] .pom. Musisz również upewnić się, że tworzysz względne ścieżki dla artefaktów zgodnych z konwencjami Maven.

E.g. dla GroupID = com.foo.bar, artifactId = mój-projektu Version = 1.0.0, ścieżka do plików będą:

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

Wariant 3

Jeśli chcesz użyj Anta do wdrożenia w repozytorium Maven, możesz użyć Ant HTTP library (Uwaga, że ​​sam tego nie próbowałem). Można utworzyć dwa zadania wstawiania HTTP, jeden dla słoika i jeden dla 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> 

Wariant 4

Jeśli chcesz uniknąć Maven całkowicie i użyć Ant wdrożyć do SVN-backed repozytorium, można użyć SvnAnt Subversion library. po prostu musisz skonfigurować zadanie Svn import, aby dodać swoje artefakty do repozytorium Remote Subversion.

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

Dziękuję, ten wpis był bardzo pomocny. – javamonkey79

1

Sprawdź, czy repozytorium Maven obsługuje maven deploy plugin. To byłoby najłatwiejsze podejście.

Większość repozytoriów używa ssh jako transportu. Aby uzyskać szczegółowe informacje, patrz this.

Gdy to ustawienie, wszystko co musisz zrobić, to:

mvn deploy:deploy 
+0

Dzięki! Wygląda ciekawie. Niestety mój skrypt budowy jest w ANT. Przypuszczam, że nie ma podobnej wtyczki do ANT :)? – jqno

7

Sprawdź wagon-svn. Pozwoli ci to "wdrożyć" do repozytorium Subversion. To trochę zawiłe, ale lepsze to niż nic. Znam kilka projektów, które używają go na java.net, a także natknąłem się na niektóre projekty wykorzystujące je na code.google.com.

Jeśli chcesz go używać, to trzeba najpierw załadować wagon-svn jako rozszerzenie:

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

Następnie trzeba ustawić swoje cele wdrażania przy użyciu svn: identyfikator protokołu. Oto przykład skopiowany z Internetu.

<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

To zautomatyzowałoby proces wdrażania do SVN, śledząc wpis na blogu, o którym wspomniałem w moim pytaniu, prawda? Przypuszczam, że nie ma czegoś takiego również dla ANT :)? – jqno

+0

Możesz użyć Mavena z wagą-svn. Nie musisz tworzyć pełnego projektu Maven, po prostu stwórz Maven POM do wdrożenia. Więc nie używasz Mavena do budowy systemu. Zbuduj JAR za pomocą Ant, następnie wdróż za pomocą 'mvn deploy: deploy-file' i odpowiedniego POM, który konfiguruje wagon-svn i" repozytorium svn maven ". –

+0

Konfiguracja wagon-svn powyżej nie jest kompletna, należy również dodać repozytorium java.net. Aby uzyskać więcej informacji, patrz: https://wagon-svn.dev.java.net/ –

0

można złożyć jar https://clojars.org/

W swojej pom.xml:

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories> 
Powiązane problemy