java - 如何从具有依赖项的SVN预提交 Hook 运行jar文件然后传递参数?

标签 java svn

我正在使用用 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/

相关文章:

java - 如果是包装类,应该如何处理异常?

java - iterator.next() 可以从源中删除元素吗? ( java )

java - 每种(通用)类型一个单例

c# - 使用源代码管理时,实际上应该提交哪些文件?

.net - 一个解决方案可以容纳来自多个存储库的项目吗?

SVN 导入现有文件

java - 解析Java中的未知对象

svn - 日期格式为 "svn: Syntax error in revision argument"

svn - 通过 SVN 下载小文件快,大文件慢

java - 如何在 java 中执行 perl 脚本?