Maven: добавьте папку или файл jar в текущий путь к классам
Я использую maven-compile plugin для компиляции классов. Теперь я хотел бы добавить один файл jar в текущий путь к классам. этот файл остается в другом месте (пусть говорит c:/jars/abc.jar. Я предпочитаю оставить этот файл здесь). Как я могу это сделать. Если я использую classpath в аргументе:
<configuration>
<compilerArguments>
<classpath>c:/jars/abc.jar</classpath>
</compilerArguments>
</configuration>
он не будет работать, потому что он переопределит текущий путь к классу (который включает все зависимости)
Пожалуйста, помогите мне.
Ответы
Ответ 1
Об этом, возможно, задавали раньше. См. Можно ли добавить jars в mpath 2 build classpath без их установки?
Вкратце: включите свою банку в зависимость от системной области. Это требует указания абсолютного пути к банке.
См. также http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
Ответ 2
Из docs и example it не ясно, что манипуляции с классами не разрешены.
<configuration>
<compilerArgs>
<arg>classpath=${basedir}/lib/bad.jar</arg>
</compilerArgs>
</configuration>
Но см. Java docs (также https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/tooldocs/solaris/javac.html)
-classpath path Указывает путь, который использует javac для поиска классов, необходимых для запуска javac или ссылки на другие классы, которые вы используете компилирование. Переопределяет значение по умолчанию или переменную среды CLASSPATH если он установлен.
Возможно, возможно получить текущий путь к классам и расширить его,
см. в maven, как вывести путь к классам?
<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>