2016-02-05 12 views
11

czy można rzeczywiście zbudować projekt maven zawierający kod java, który zostanie zbudowany raz, a pliki binarne można udostępnić?Czy możliwe jest zbudowanie projektu java tylko raz przy użyciu środowiska Eclipse i udostępniania?

Problem: Projekt, który próbuję zbudować, zajęłby mi około 3-4 godzin i wymaga dużej przepustowości łącza internetowego. Próbuję sprawdzić możliwość ponownego wykorzystania tego zbudowanego projektu wśród kilku innych maszyn.

Pracowałem wcześniej z projektami C++ z użyciem plików Makefile i było to znacznie prostsze. Jestem nowicjuszem w Java/eclipse i potrzebuję pomocy, aby dowiedzieć się, czy jest to naprawdę możliwe.

PS: Próbowałem znaleźć istniejące rozwiązania; oni nie byli główni do przodu lub mówią, że to nie może być zrobione

Odpowiedz

11

Budowa raz i udostępniać je w trybie offline

W Maven, można zbudować swój projekt tylko raz i pobrać plik JAR w pełni zapakowany ze wszystkimi zależnościami. Abyś mógł dzielić ten JAR z innymi maszynami off-line.

Poniżej znajdują się kroki, aby to zrobić.

  1. Najpierw zaktualizować pom.xml z poniżej ustawienie
<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>com.thanga.MyTest[REPLACE WITH YOUR MAIN CLASS]</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

  1. Package projektu z celem package assembly:single jak pokazano poniżej:

W konsoli

mvn package assembly:single 

w Eclipse,

enter image description here


  1. uruchomić ten można uzyskać dwa JAR akta. Jeden z nich MyFullPack-0.0.1-SNAPSHOT-jar-with-dependencies.jar ma załadowane pełne zależności .

enter image description here


  1. Można otworzyć JAR zobaczyć Zależności są pakowane, jak pokazano poniżej.

enter image description here


  1. Możesz udostępnić tę JAR do innych maszyn off-line bez dłużej budować

+0

@Siva To rozwiązanie jest budowane tylko raz w maven i możesz udostępniać je offline innym maszynom – Thanga

8

Czy można rzeczywiście zbudować projekt maven zawierający kod java, który zostanie zbudowany raz, a pliki binarne mogą być współużytkowane?

Tak, to jest cały punkt Mavena, raz budujesz projekt, generując artefakt (twój słoik/wojna ...), który jest przechowywany w lokalnym repozytorium maven.

Następujące polecenie budowania projektu i zapisać go w lokalnym repo:

mvn clean install 

Jeśli jednak to zrobić, trzeba tylko artefakt na Twoim repo.

Dobrą praktyką jest stworzenie repozytorium i przechowywać swoje artefakty tam: https://maven.apache.org/repository-management.html

Użycie następującego polecenia byłoby zapisać zależność migawki w repozytorium:

mvn clean deploy 

Następnie można ponownie wykorzystaj komponenty za pomocą wielu komputerów, podając dependencies w pliku pom.xml nowego projektu.

Może chcesz dać do obejrzenia tej instrukcji:

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Można by oczywiście trzeba skonfigurować repozytorium i projektu maven w celu korzystania z konfiguracji tego rodzaju.

+1

Chciałbym również zaproponować integrującego maven z Jenkinsem. Sam Jenkins nie obsługuje kompilacji. Może jednak uruchomić kompilację, uruchomić JUNIT itd., Wykonując wywołania do pliku pom.xml w projekcie. Jenkins daje ci możliwość decydowania, kiedy wywołać plik pom.xml, jak zadzwonić i co chcesz zrobić z wynikiem. Jenkins może słuchać różnych zdarzeń, np. Svn commit. To jest potężny pomysł. Na przykład możesz poprosić Jenkinsa o wyzwolenie kompilacji lub uruchomienie wszystkich testów JUnit za każdym razem, gdy zostanie zatwierdzony nowy kod, a następnie, jeśli testy jednostek zostaną zakończone, wdrożyć na maszynie docelowej. – Learner

+0

Dodam, że jeśli chcesz tylko uzyskać artefakt, nie powinieneś uruchamiać instalacji mvn, pakiet mvn skompiluje artefakt i umieści go w folderze docelowym twojego projektu. – jvalli

1

Jeśli używasz programu maven, mvn install zainstaluje plik binarny w folderze $ {home} /. M2. Te binarne będą dostępne dla wszystkich innych zadań, które będą działać na tej samej maszynie.

Jeśli chcesz udostępnić plik binarny między wieloma komputerami, możesz rozmieścić swoje słoiki w repozytorium, takim jak nexus lub artifactory.

2

Po pierwsze rzeczy. Czy Twój projekt to aplikacja internetowa (wojna) lub aplikacja dla przedsiębiorstw (ucho) lub tylko samodzielny Jar?

można użyć znacznika opakowania w POM.xml do spakowania aplikacji do JAR, WAR, EAR

Przykłady:

<packaging>war</packaging> 
<packaging>ear</packaging> 
<packaging>jar</packaging> 

Następnie uruchom mvn czystej instalacji

W projekcie/src/target powinieneś zobaczyć słój, wojny lub ucha wygenerowany których możesz użyć do wdrożenia na swoim komputerze lub dowolnej innej maszynie.

LUB

można również stwierdzić, że w .m2 folderze Po uruchomieniu instalacji.

1

Możesz po prostu wziąć ja r plik docelowego folderu i skopiuj go na inne komputery, w przeciwnym razie możesz użyć repozytorium akcji, takiego jak nexus oder artifactory, aby udostępnić swój zbudowany plik binarny. Maven jest w stanie automatycznie rozmieszczać artefakty w tych repozytoriach.

Powiązane problemy