2009-06-25 5 views
19

Mi stanco di installare manualmente i file jar javax in Maven e vorrei sapere qual è la soluzione migliore per includere una dipendenza su javax.cache, javax.transaction o altri JSR che non sono facili da trovare nei repository Maven.Come aggiungere le dipendenze di javax. * In Maven?

+0

Come nota a margine. Poiché Java è ora open source, possiamo sbarazzarci di queste ridicole restrizioni di download? – pjesi

+0

Il problema con JTA è la licenza di distribuzione binaria. Lo so, fa schifo –

risposta

11

Hai visto http://maven.apache.org/guides/mini/guide-coping-with-sun-jars.html?

Questo collegamento suggerisce groupID e gli artefatti da utilizzare, nonché un repository java.net.

Mi sembra che quasi tutti siano presenti nel repository centrale di Maven in questo schema di denominazione.

+0

Grazie per il link, mi ha aiutato molto. Tuttavia, non mi aiuta a trovare javax.cache. Qualche idea? – pjesi

5

Io non sono a conoscenza di uno, ma aggiungendo la repository java.net può aiutarvi con alcune di queste dipendenze:

<repositories> 
    <repository> 
     <id>java.net repository</id> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
</repositories> 
3

javax.cache sono in jcache:jcache:1.0-XXX artefatto (nel repo centrale di Maven)

<dependency> 
    <groupId>jcache</groupId> 
    <artifactId>jcache</artifactId> 
    <version>1.0-dev-2</version> 
</dependency> 

javax.transaction.* le classi sono in javax.transaction:jta:1.1 artefatto, jar JTA non può essere inserito nel repository Maven perché la licenza binaria del Sole (lo so, questo fa schifo). Per usarlo è necessario scaricare manualmente il JAR (è gratuito) e inserirlo in un repository locale o utilizzare la versione 1.0.1B contenuta in java.net.

NOTA: Ho letto in qualche luogo JTA sarà integrato nelle future versioni del JDK

quello che so è davvero un dolore per trovare questi artefatti nel repository di Maven ma si può fare una ricerca di un classe in www.mvnrepository.com e mostrerà il groupId e l'artefatto corretti per quasi tutti i pacchetti.

+0

Javax.transaction 1.0.1B è in http://download.java.net/maven/2 –

4

Se si costruisce su più di una scatola e/o per lo sviluppo del team, un gestore di archivi Maven locale (intranet) può aiutare con questi vasi "mancanti". Ciò centralizza la configurazione e la gestione di non solo contenitori di terze parti che non si trovano in un repository pubblico, ma anche tutti i repository esterni in generale. Potrebbe anche aiutare ad automatizzare le tue build, creando build più "riproducibili" (ad es., Se hai un pool di server di integrazione continua).

  1. installare un mpn repo mgr (vedere elenco - imo, nexus è davvero semplice da cui partire);
  2. utilizza un file settings.xml personalizzato che include una sezione "specchi" che punta al tuo mvn repo mgr della tua intranet. Aggiorna il tuo ~/.m2/settings.xml, o esegui Maven con "mvn -s etc/settings.xml" - utile per le build di hudson, dove non vuoi un utente personalizzato per settings.xml;
  3. carica manualmente i tuoi jar "problematici" sul tuo repository interno (ancora, super-semplice w/Nexus tramite un'interfaccia web);
  4. impostare il mvn repo mgr interno come "mirror" di repo1.maven.org/maven2, codehaus, java.net, ... (ecc.).

Ora, è possibile centralmente definire tutti i repository 3rd party & 3rd vasetti di partito - invece di richiedere ogni persona, ogni scatola e/o di ogni progetto definirli singolarmente nella loro pom o settings.xml. Ogni progetto/persona/scatola definirà SOLO il tuo repository centrale e interno come unico repository per tutti i progetti Maven.

Questo anche davvero accelera il manufatto ri-scaricare il tempo per fresco costruisce, o per quei momenti in cui è necessario (o vorrebbe) eliminare il/.m2/cache locale ~ repository.

manager Repo: Nexus, ARCHIVA, Artifactory ... ad esempio ,: maven.apache.org/repository-management.html - http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

+0

provato, bello – tgkprog

1

Nel caso particolare di JTA, mi ha colpito questo post:

http://www.jugpadova.it/articles/2005/11/26/maven-2-spring-and-jta-depencies 

.. che ha senso, se non dovessi passare molto tempo nel sito orribile di Oracle per ottenere il file JAR di cui sopra. (Ero io stesso un appassionato di Oracle ma quel sito poteva usare molte rielaborazioni di UX qua e là).

ho deciso di sostituire la dipendenza con quello che Hibernate fornisce, tramite Geronimo, come per questo post (funzionava perfettamente):

https://forum.hibernate.org/viewtopic.php?p=2420836 

L'accordo con licenza Java e Maven è attualmente in lavorazione dal team di Hibernate , o così sembra qui:

https://hibernate.onjira.com/browse/HHH-4548 

Grazie a tutti per la condivisione!