2010-12-31 15 views
13

Używamy ANT do naszego procesu kompilacji i nie mamy planów zmiany tego w najbliższej przyszłości.Używanie Mavena do pobierania słoików bibliotecznych

Czy jest możliwe aby użyć Maven do tylko sprowadzić wspólne pliki jar Open Source (np Log4J, SWT, jface) i umieścić je w odpowiednim miejscu naszego projektu, więc nie trzeba przechowywać je w naszym kontrola wersji — lepiej bez tworzenia typowej pamięci podręcznej Maven w katalogu domowym?

Odpowiedz

17

NIE NIE NIE Wszyscy!

Jeśli korzystasz z Anta, najlepszym sposobem na wykorzystanie repozytoriów Maven do pobrania zależności słoiczków jest użycie Ant z numerem Ivy. Właśnie do tego służy Ivy.

Instalacja bluszczu i praca z obecnymi projektami Ant jest prosta. Działa z Nexus i Artifactory, jeśli używasz ich jako lokalnych repozytoriów Maven.

Spójrz na Ivy. To prawdopodobnie dokładnie to, czego chcesz.

+0

Lub zadania mrówek. Używa ant do pobierania artefaktów z repozytorium. http://maven.apache.org/ant-tasks/index.html – michael

+0

Nie używaj zadań z użyciem maven-ant, to bardzo stary projekt, który powinien być przestarzały, ma rozdzielczość podstawową, ale wszystko, co będzie poza tym, prawdopodobnie pojawi się wkrótce – sloven

4

W wariancie org.life.java's answer, nie zrobiłbym mvn install.

Zamiast w pom.xml Dodam następujące bity:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
<outputDirectory>${project.build.directory}/lib</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Teraz wystarczy zrobić mvn generate-sources, który jest o wiele szybciej niż pełny mvn install i wszystkie zależności zostaną skopiowane do podanego katalogu.


Och, przy okazji, czy nie o to chodzi w tym Apache Ivy? Przedłużanie Anta w celu zrozumienia zarządzania zależnościami Maven?

+0

+1 dla Apache Ivy – Goibniu

+0

nie wiem o Apache Ivy albo. Czy jest możliwe skopiowanie pewnych bibliotek tutaj i innych? – Mot

+1

@mklhmnn Nigdy nie próbowałem Ivy. Jestem użytkownikiem maven, który czasami używa mrówki, a nie odwrotnie, więc nie byłbym docelową grupą dla Ivy.Ale oto cytat ze strony funkcji: "Apache Ivy może być zatem użyty do dostosowania funkcji zarządzania zależnościami Apache Maven ™ do plików kompilacji Apache Ant, dla tych którzy już używają Apache Ant i którzy nie chcą konfigurować Apache'a Projekt Maven. Ale Apache Ivy na tym nie poprzestaje, zapewnia wiele innych wspaniałych funkcji! " http://ant.apache.org/ivy/features.html –

4

Jest to możliwe, powinieneś użyć maven-ant-tasks.

W szczególności jego zadaniem jest mrówka dependencies. Przy tej konfiguracji nie jest wymagana instalacja Mavena.

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    name="download-dependency" 
    basedir="." 
    default="download-dependency" 
    xmlns:artifact="antlib:org.apache.maven.artifact.ant" 
> 
    <target name="download-dependency"> 

    ... define properties ... 

    <taskdef 
     resource="org/apache/maven/artifact/ant/antlib.xml" 
     uri="antlib:org.apache.maven.artifact.ant" 
    /> 

    <artifact:dependencies> 
     <localRepository path="${local-repo.dir}"/> 
     <remoteRepository id="central" url="${repository-uri}"/> 
     <dependency 
     groupId="${groupId}" 
     artifactId="${artifactId}" 
     version="${version}" 
     type="${type}" 
     classifier="${classifier}" 
     scope="runtime" 
     /> 
    </artifact:dependencies> 
    </target> 
</project> 

Jedynym binarnym elementem, który należy sprawdzić w projekcie jest maven-ant-tasks.jar.

Właściwie w naszym projekcie użyłem Sonatype Nexus (documentation) menedżera repozytorium Maven, aby scentralizować dostęp do różnych repozytoriów, a nawet zachować niektóre pliki binarne unikalne dla naszego środowiska. Z pomocą Nexusa po prostu ściągam maven-ant-tasks.jar ze zlecenia anta <get> ze znanego adresu URL. Nie musisz używać Nexusa, ale to znacznie przyspiesza kompilacje, ponieważ buforuje pliki binarne w pobliżu komputerów programistów.

2

Ivy robi tylko to, gdy siłach się:
http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml

<property name="ivy.install.version" value="2.0.0-beta1"/> 
<property name="ivy.jar.dir" value="lib"/> 
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/> 
<target name="resolve" unless="skip.download"> 
    <mkdir dir="${ivy.jar.dir}"/> 
    <echo message="installing ivy..."/> 
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/> 
</target> 
Powiązane problemy