Чтобы использовать внешний объект com com, я должен включить библиотеку Jacob jar и dll в свой плагин Jenkins. Я нашел jacob_excel_reader plugin, которые используют Якоб, но решение меня не удовлетворяет. Разработчик добавил зависимость баночку с pom.xml
файла:Использовать внешнюю библиотеку dll в плагине Jenkins
<dependency>
<groupId>com.jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.17-M2</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jacob.jar</systemPath>
</dependency>
и интегрирует DLL-файл с помощью аргумента:
-Djava.library.path=${workspace_loc:jacob_excel_reader}\lib
Это единственный способ интегрировать DLL? Я пробовал это по-другому, но я застрял на полпути, и мне определенно нужна ваша помощь!
Сначала я добавил зависимость для фляги и длл файл в pom.xml
:
<dependency>
<groupId>net.sf.jacob-project</groupId>
<artifactId>jacob</artifactId>
<version>1.14.3</version>
</dependency>
<dependency>
<groupId>net.sf.jacob-project</groupId>
<artifactId>jacob</artifactId>
<version>1.14.3</version>
<classifier>x86</classifier>
<type>dll</type>
</dependency>
и настроить, что файл DLL будет скопирован в target/APPNAME/WEB-INF/lib
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<excludeTransitive>true</excludeTransitive>
<includeArtifactIds>jacob</includeArtifactIds>
<includeTypes>dll</includeTypes>
<failOnMissingClassifierArtifact>true</failOnMissingClassifierArtifact>
<silent>false</silent>
<outputDirectory>target/APPNAME/WEB-INF/lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Когда я бегу mvn package
в испытания по умолчанию бросают предупреждение:
SEVERE: Failed Inspecting plugin C:\...\AppData\Local\Temp\hudson7697228528744044800tmp\the.jpl
java.util.zip.ZipException: error in opening zip file
, но он копирует файл dll и jar в target/APPNAME/WEB-INF/lib
. Почему он копирует файл jar и что вызывает ZipException?
Во время выполнения плагина плагинов бросает:
FATAL: no jacob-1.14.3-x86 in java.library.path
java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x86 in java.library.path
и не может найти файл DLL, почему? Могу ли я добавить target/APPNAME/WEB-INF/lib
в java.library.path
без использования приведенного выше аргумента?
Я использовал фрагмент кода (и изменил 'getServletContext()' на 'Jenkins.getInstance(). ServletContext'), но он выдает' FATAL: ... \ target \ work \ webapp \ WEB-INF \ lib: Может 't найти зависимые библиотеки java.lang.UnsatisfiedLinkError: ... \ target \ work \ webapp \ WEB-INF \ lib: не удается найти зависимые библиотеки –
Есть ли какое-нибудь решение? –