Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Linux中process exec maven插件(bazaarvoice)的类路径问题_Java_Maven_Jenkins - Fatal编程技术网

Java Linux中process exec maven插件(bazaarvoice)的类路径问题

Java Linux中process exec maven插件(bazaarvoice)的类路径问题,java,maven,jenkins,Java,Maven,Jenkins,我正在使用process exec maven插件(bazaarvoice)为我的集成测试执行几个流程。我的公司对如何使用工件有一些要求。主进程(MyMaven模块)打包在一个jar中(例如:my-app-1.0-SNAPSHOT.jar),其余依赖项(jar)必须位于目标内部的文件夹/lib中。因此,需要在类路径中添加jar文件和/lib文件夹 <plugin> <groupId>com.bazaarvoice.maven.plugins</groupId

我正在使用process exec maven插件(bazaarvoice)为我的集成测试执行几个流程。我的公司对如何使用工件有一些要求。主进程(MyMaven模块)打包在一个jar中(例如:my-app-1.0-SNAPSHOT.jar),其余依赖项(jar)必须位于目标内部的文件夹/lib中。因此,需要在类路径中添加jar文件和/lib文件夹

<plugin>
    <groupId>com.bazaarvoice.maven.plugins</groupId>
    <artifactId>process-exec-maven-plugin</artifactId>
    <version>0.7</version>
    <executions>
      <!-- before I have other executions -->
      <execution>
        <id>demo-process</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>start</goal>
        </goals>
        <configuration>
          <name>demo-process</name>
          <processLogFile>${project.build.directory}/logs/my-log.log</processLogFile>
          <arguments>
            <argument>java</argument>
            <argument>-cp</argument>
            <argument>${project.artifactId}-${project.version}.jar${path.separator}lib/*</argument>
            <argument>com.example.Main</argument>
          </arguments>
        </configuration>
      </execution>
    </executions>
  </plugin>

com.bazaarvoice.maven.plugins
processexecmaven插件
0.7
演示过程
预集成测试
开始
演示过程
${project.build.directory}/logs/my-log.log
JAVA
-cp
${project.artifactId}-${project.version}.jar${path.separator}lib/*
com.example.Main
这个很好用

现在,/lib文件夹中的一个依赖项正在尝试访问当前项目的资源(属性文件)。因此,我需要将资源所在的文件夹添加到类路径中

<argument>${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${project.build.testOutputDirectory}/</argument>
${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${project.build.testOutputDirectory}/
此更改在使用Windows的本地环境中也可以正常工作

但是,当我在Jenkins(Linux环境)中运行应用程序的管道时,它失败了,因为找不到主类。我的应用程序(my-app-1.0-SNAPSHOT.jar)的jar现在没有添加到类路径中。所以它在本地运行良好,但在詹金斯总是失败

我尝试过使用插件在pom中配置类路径的不同方法,但总是失败

我试过用引号

<argument>"${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${project.build.testOutputDirectory}/"</argument>
“${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${project.build.testOutputDirectory}/”
还使用${project.build.directory}

<argument>${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${${project.build.directory}/test-classes</argument>
${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${${project.build.directory}/test classes
还改变了顺序

<argument>${project.build.testOutputDirectory}${path.separator}${project.artifactId}-${project.version}.jar${path.separator}lib/*</argument>
${project.build.testOutputDirectory}${path.separator}${project.artifactId}-${project.version}.jar${path.separator}lib/*
我还尝试删除*并使用不同版本的插件0.8、0.9。 我总是得到相同的结果,它在Windows的本地环境中运行良好,但在Linux中无法让java进程在管道中运行


有什么想法吗?

你有没有试过在调试模式下运行maven
mvn-X…
并检查正在执行的确切java命令?当你在maven之外执行该命令时会发生什么?你有没有想过,我在Jenkins上也遇到了错误,并且在我的本地mac OS上运行良好,我得到了
java.lang.runtimeException离子:即使在Jenkins上90秒后,过程也不正常