2

我正在使用用 java 开发的预提交钩子。现在我需要在预提交中运行它。

  • 项目清单

如何运行具有依赖关系的 jar 文件?我是否必须制作可执行的 jar 文件才能从预提交运行?如何将类路径和参数提供给 jar 文件?

目前,我在预提交中以这种方式运行,它工作正常。现在我需要将其移至生产环境

 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=11111 
 $JAVA_OPTS -Dfile.encoding=MacRoman 
-classpath 
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/deploy.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/dt.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/javaws.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/jce.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/jconsole.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/management-agent.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/plugin.jar:
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/ext/sunjce_provider.jar:
 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/lib/ext/sunpkcs11.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/SCS/SCS/SCSAPI/classes:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/hibernate-tools.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/dom4j-1.4.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/commons-logging.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/commons-collections-2.1.1.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/mysql-connector-java-5.1.22-bin.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/hibernate2.jar:
 /Users/testuser/Documents/Dev/projects/SCS/sc/g3/_lib/ehcache-1.1.jar 
 com.ticoon.scs.SCSMain 
 pre-commit file -c /Users/testuser/Documents/Dev/projects/SCS/sc/SCS/SCS/config.xml -v -repos $REPOS -trxn $TXN
4

2 回答 2

0

是的,它现在使用单个文件。谢谢@rlegendi 工作副本

 REPOS="$1"
 TXN="$2"
 java -jar /Users/testuser/Documents/SCS/SCS.jar pre-commit file -c /Users/testuser/Documents/SCSAPI/config.xml -repos $REPOS -trxn $TXN
于 2012-11-27T20:22:44.743 回答
0

我必须制作一个可执行的 Jar 文件吗?

您不需要创建可运行的 Jar,但建议这样做,因为它使事情变得更容易。

基本上,如果您运行 Jar 文件,则必须指定包含该main()方法的类:

java -jar myjar.jar x.y.z.Main

如果你在文件中Main-Class: x.y.z.Main定义了一个属性MANIFEST.MF,你可以简单地运行 Jar 文件:

java -jar myjar.jar

如何为 Jar 文件提供类路径?

当您使用该java -jar ...命令运行某些内容时,该-classpath ...属性将被删除。原因是安全性(Jar 文件可以进行数字签名以确保它们不会被修改,并且很容易让 java 加载具有相同内容但具有劫持功能的不同依赖项 Jar 文件)。

解决方案很简单:Class-Path: ...在文件中也包含属性,MANIFEST.MF就像使用Main-Class: ....

如何为 Jar 文件提供参数?

正如您将参数提供给一个简单的 Java 程序(并且手册指定它):

java -jar myjar.jar arg1 arg2 ... argN
于 2012-11-27T16:45:00.117 回答