如何通过执行shell将参数传递给Jenkins作业

问题描述:

  1. 我需要在入口点类之一中拥有主类吗?
  2. 我尝试添加主类,但是当我试图通过它的说法主类无法加载或找不到。

这里是我使用的命令:如何通过执行shell将参数传递给Jenkins作业

jar -xvf jarname.jar 
java -cp /path/filename.class $JOB_URL $USER $PASSWORD 

路径名称是文件名,其中入口点和具有main()方法。

1)我是否需要在入口点类中的一个主类?

是的。并通过参数不应该要求解压缩JAR档案:详见“How do I pass parameters to a jar file at the time of execution?

java -jar jarname.jar param1 param2 

但是,这需要一个MANIFEST file inside the jar which reference the main class

Main-Class: MyPackage.MyClass 

或者你可以使用 - 他“jar e”选项(如果您的罐子没有Manifest.txt文件)“”

如果入口点的类名是在一个包就可以使用(点)字符作为分隔符。
例如,如果Main.class是在一个名为foo包的入口点可以通过以下方式来指定:

jar cfe Main.jar foo.Main foo/Main.class 

在这两种情况下,你就不必解压罐子。

+0

我们需要手动添加Manifest.mf吗? –

+0

@RockyHai是的,如https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html所述。但是,如答案的最后部分所述,您还可以使用'jar cfe'命令测试您的jar,而不假设存在'Manifest'。 – VonC

+0

目前我没有添加Manifest.mf,因此我可以使用jar cfe jarname.jar path.entryclass $ param。 –