web-dev-qa-db-fra.com

Maven: ajouter un dossier ou un fichier jar dans le chemin de classe actuel

J'utilise le plugin maven-compile pour compiler les classes. Maintenant, je voudrais ajouter un fichier jar dans le chemin de classe actuel. Ce fichier reste dans un autre emplacement (disons c: /jars/abc.jar. Je préfère laisser ce fichier ici). Comment puis je faire ça?

Si j'utilise classpath dans l'argument:

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

cela ne fonctionnera pas car il remplacera le chemin de classe actuel (qui inclut toutes les dépendances)

Aidez-moi, s'il vous plaît.

17
David

Cela aurait pu être demandé auparavant. Voir Puis-je ajouter des jars à maven 2 build classpath sans les installer?

En un mot: incluez votre pot comme dépendance avec la portée du système. Cela nécessite de spécifier le chemin absolu vers le bocal.

Voir aussi http://maven.Apache.org/guides/introduction/introduction-to-dependency-mechanism.html

8
michid

D'après docs et exemple , il n'est pas clair que la manipulation du chemin de classe n'est pas autorisée.

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

Mais voir Java docs (aussi https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/tooldocs/solaris/javac.html )

-classpath path Spécifie le chemin utilisé par javac pour rechercher les classes nécessaires à l'exécution de javac ou référencées par d'autres classes que vous compilez. Remplace la variable d'environnement par défaut ou CLASSPATH si elle est définie.

Il est peut-être possible d'obtenir le chemin de classe actuel et de l'étendre,
voir dans maven, comment afficher le chemin de classe utilisé?

    <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>

Lire le fichier ( Lire un fichier dans une propriété Maven )

<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>

et enfin

  <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>
2
Paul Verest