Maven jest świetny. Przeważnie uniemożliwia mi to wyjście z piekła zależnego od słoja, określając wersje zależnych pakietów w konfiguracji pom
i stosuje je automatycznie. Ma również świetną integrację z Eclipse poprzez m2e, dzięki czemu wszystko działa bezproblemowo w środowisku IDE.Maven i Eclipse: niezawodny sposób dodania do projektu non-Maven lub zewnętrznych słoików?
To wszystko jest dobre dla zależności znanych na całym świecie z Maven. Czasami jednak istnieją biblioteki, które należy uwzględnić w projekcie, który nie jest dostępny w repozytoriach Maven. W takim przypadku zazwyczaj dodajemy je do katalogu lib/
w moim projekcie. Dopóki znajdują się w ścieżce klas, kompilują się.
Problem polega jednak na tym, że należy je włączyć automatycznie podczas importowania projektu. Zwalczałem ten problem z na wpół wypalonymi poprawkami i hackami przez zbyt długi czas. Za każdym razem, gdy ktoś instaluje ten projekt, muszę powiedzieć, aby ręcznie dodać słoiki w lib/
do swojej ścieżki budowania Eclipse, aby wszystkie błędy zniknęły. Coś jak następuje:
Szukam sposobu, aby zautomatyzować ten proces w sposób, który działa zarówno z programem wiersza poleceń mvn
i Eclipse: więcej nacisk na Eclipse, bo to miło mieć projekty, które kompilują się po ich imporcie.
Nie chcę skonfigurować serwera repo do tego, ani nie mam żadnych własnych zastrzeżonych składników, które uzasadniałyby ustawienie czegoś lokalnie. Mam tylko pliki jar, w których programiści nie używają Mavena; i chcę się z nimi skompilować ... powinienem po prostu włączyć je do dystrybucji mojego oprogramowania, prawda?
Naprawdę szukam rozsądnego sposobu na wdrożenie tego, który będzie działał również w Eclipse bez problemów. This is one solution Znalazłem obiecujące, ale z pewnością nie wydaje się być autorytatywne rozwiązanie tego problemu. Jedyną rzeczą, która się zbliża jest maven-addjars-plugin, który działa dobrze, ale tylko w linii poleceń. Ta wtyczka nie jest złe, i ma dość rozsądną konfigurację:
<plugin>
<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<goals>
<goal>add-jars</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/lib/java-aws-mturk</directory>
</resource>
<resource>
<directory>${project.basedir}/lib/not-in-maven</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
jednak próbuje go uruchomić w Eclipse obejmuje dodanie następującego bałagan o mapowaniu cyklem do swojej pom.xml
, który nigdy nie dostał się do pracy; Nie sądzę, że jest skonfigurowany tak, aby faktycznie dodać coś do ścieżki budowania Eclipse.
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.googlecode.addjars-maven-plugin
</groupId>
<artifactId>
addjars-maven-plugin
</artifactId>
<versionRange>
[1.0.5,)
</versionRange>
<goals>
<goal>add-jars</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Wolałbym polegać na lokalnej instalacji nexusa. –
Chcę móc przekazać to oprogramowanie innym użytkownikom, więc wydaje się to nieuzasadnione. To tylko kilka słoików, którymi chcę się podzielić, więc nie powinno to być aż tak skomplikowane. –
Nexus (lub jakakolwiek inna implementacja repo) pomogłaby w procesie budowania, więc nie byłaby potrzebna dla użytkowników; natomiast jeśli jesteś FOSS, wykorzystywanie bibliotek innych osób i wysyłanie łatek w górę strumienia przyczyniłoby się do rozwoju społeczności. W każdym razie, twój wybór. –