我正在使用用 Java 开发的预提交 Hook 。现在我需要在预提交中运行它。
- 列表项
如何使用依赖项运行 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
最佳答案
我必须制作一个可执行的 Jar 文件吗?
您不需要创建一个可运行的 Jar,但我们建议您这样做,因为它会让事情变得更容易。
基本上,如果你运行一个 Jar 文件,你必须指定包含 main()
方法的类:
java -jar myjar.jar x.y.z.Main
如果您在 MANIFEST.MF
文件中定义了一个 Main-Class: x.y.z.Main
属性,您可以通过以下方式简单地运行 Jar 文件:
java -jar myjar.jar
如何为 Jar 文件提供类路径?
当您使用 java -jar ...
命令运行某些内容时,-classpath ...
属性将被删除。原因是安全性(可以对 Jar 文件进行数字签名以确保它们未被修改,并且很容易让 java 加载具有相同内容但具有劫持功能的不同依赖 Jar 文件)。
解决方案很简单:在您的 MANIFEST.MF
文件中也包含 Class-Path: ...
属性,就像您对 Main-Class 所做的那样: ...
。
如何给Jar文件赋参数?
就像您为简单的 Java 程序(以及 manual specifies 它)提供参数一样:
java -jar myjar.jar arg1 arg2 ... argN
关于java - 如何从具有依赖项的SVN预提交 Hook 运行jar文件然后传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586922/