2010-08-04 2 views
14

Sto usando il plugin di maven-compile per compilare le classi. Ora vorrei aggiungere un file jar nel classpath corrente. quel file rimane in un'altra posizione (diciamo c: /jars/abc.jar. preferisco lasciare questo file qui). Come lo posso fare. Se uso classpath nell'argomento:Maven: aggiungi una cartella o un file jar al classpath corrente

<configuration> 
<compilerArguments> 
    <classpath>c:/jars/abc.jar</classpath> 
</compilerArguments> 
</configuration> 

non si lavora perché si avrà la precedenza sul classpath corrente (che includono tutte le dipendenze)

ti prego, aiutami.

+0

Questo barattolo deve essere esattamente in quella posizione o hai solo bisogno di un modo per includere i jar locali? – Gamlor

+2

Duplicato di [Maven, come aggiungere librerie aggiuntive non disponibili in repo] (http://stackoverflow.com/questions/2479046/maven-how-to-add-additional-libs-not-available-in-repo), [Maven. Cosa fare con i jar "senza casa"?] (Http://stackoverflow.com/questions/2916949/maven-what-to-do-with-homeless-jars), [I jar locali non sono inclusi nel percorso della classe] (http : //stackoverflow.com/questions/3280834/local-jars-are-not-included-in-class-path/3281409#3281409) e molti altri. –

+1

Hai trovato un modo per aggiungere dir? Invece di aggiungere ogni singolo jar in classpath? – SJunejo

risposta

7

Questo potrebbe essere stato chiesto prima. Vedi Can I add jars to maven 2 build classpath without installing them?

In breve: includere il proprio jar come dipendenza dall'ambito del sistema. Ciò richiede di specificare il percorso assoluto del barattolo.

Vedi anche http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

+10

Mi chiedo quando le persone smetteranno di suggerire di abusare dell'ambito 'system' Vedi Brian's [answer] (http://stackoverflow.com/questions/364114/can-i-add-jars-to-maven-2-build-classpath- senza-installarli/764684 # 764684) nella domanda a cui ti sei collegato. Vedi anche [questa risposta precedente] (http://stackoverflow.com/questions/3280834/local-jars-are-not-included-in-class-path/3281409#3281409). –

+1

un'altra domanda. Se ho bisogno di aggiungere una cartella (contiene molti file .class) in classpath. Come posso farlo. – David

+1

@Pascal Thivent - beh, finirà quando le persone smetteranno di fare sciocchezze come bin.zip contenuto nel progetto org.bytedeco javacv-0.9 in maven central. Se parli del normale comportamento di un esperto, beh, come utente non riesco a correggere il caricamento di Maven .....forse dovrei lamentarmi a Maven Central. – user1050755

0

Da docs e example non è chiaro che la manipolazione classpath non è permesso.

<configuration> 
<compilerArgs> 
    <arg>classpath=${basedir}/lib/bad.jar</arg> 
</compilerArgs> 
</configuration> 

Ma vedi Java docs (anche https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/tooldocs/solaris/javac.html)

percorso -classpath Specifica il javac percorso utilizza per cercare le classi necessarie per eseguire javac o come riferimento da altre classi si sono compilazione. Sostituisce la variabile di ambiente predefinita o CLASSPATH se è impostata.

forse è possibile ottenere classpath corrente ed estenderlo,
vedere in maven, how output the classpath being used?

<properties> 
     <cpfile>cp.txt</cpfile> 
    </properties> 

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.9</version> 
    <executions> 
     <execution> 
     <id>build-classpath</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>build-classpath</goal> 
     </goals> 
     <configuration> 
      <outputFile>${cpfile}</outputFile> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

file letto (Read a file into a Maven property)

<plugin> 
    <groupId>org.codehaus.gmaven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
    <execution> 
     <phase>generate-resources</phase> 
     <goals> 
     <goal>execute</goal> 
     </goals> 
     <configuration> 
     <source> 
      def file = new File(project.properties.cpfile) 
      project.properties.cp = file.getText() 
     </source> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

e infine

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgs> 
     <arg>classpath=${cp}:${basedir}/lib/bad.jar</arg> 
     </compilerArgs> 
    </configuration> 
    </plugin>