Maven: добавить папку или файл JAR в текущий путь к классу - PullRequest
17 голосов
/ 05 августа 2010

Я использую плагин maven-compile для компиляции классов. Теперь я хотел бы добавить один файл JAR в текущий путь к классу. Этот файл находится в другом месте (скажем, c: /jars/abc.jar. Я предпочитаю оставлять этот файл здесь). Как я могу это сделать?

Если я использую classpath в аргументе:

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

это не будет работать, потому что переопределит текущий путь к классу (который включает в себя все зависимости)

Пожалуйста, помогите мне.

Ответы [ 2 ]

8 голосов
/ 05 августа 2010

Об этом можно было спросить раньше.См. Можно ли добавить файлы jar в путь к классу сборки maven 2 без их установки?

В двух словах: включите свой файл jar как зависимость от области системы.Для этого необходимо указать абсолютный путь к банке.

См. Также http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

2 голосов
/ 25 июля 2017

Из документов и пример не ясно, что манипуляции с classpath недопустимы.

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

Но см. Документы Java (также https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/tooldocs/solaris/javac.html)

-classpath path Указывает путь, который javac использует для поиска классов, необходимых для запуска javac или на которые ссылаются другие ваши классы. компилирование. Переопределяет переменную по умолчанию или переменную среды CLASSPATH. если он установлен.

Возможно, можно получить текущий путь к классу и расширить его,
см. в maven, как вывести используемый classpath?

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

Чтение файла ( Чтение файла в свойство 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>

и наконец

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