3

我正在开发一个 Spring MVC 应用程序并使用 Maven。我目前正在尝试创建一些 Java“脚本”(我不确定我应该称它们为“脚本”,我实际上是指可以在命令上调用的“具有 main(String[] args) 方法的 Java 类”行)使用 Liquibase 做一些工作。

“脚本”将从 Spring MVC 应用程序加载一些上下文文件,并可以从 Web 应用程序访问属性文件。因此,他们将能够使用与应用程序等相同的数据库连接设置。

我的问题是:如何运行这些脚本?

在本地,我正在使用 Eclipse,使用“运行方式/Java 应用程序”可以轻松运行这些“脚本”。但我也希望能够在我的 prod 服务器上运行它们,在该服务器上我不能使用 eclipse 来启动它们。我应该怎么做才能在那里运行它们?

我应该以 .war 以外的其他格式导出我的应用程序吗?我应该从项目中创建一个额外的 .jar 以便能够使用“java -jar”运行脚本吗?

我应该为这些脚本创建一个单独的项目吗?但是,脚本是否能够从位于另一个项目中的 Spring MVC 应用程序加载所需的上下文?

也许有一种我看不到的简单方法来做到这一点?

更新:我看到我可以实现我想要的一种方法是让 Web 应用程序公开 Web 服务作为运行任务的门。然后我可以在命令行上调用那些使用wget或其他东西的人。但我更希望能够直接访问这些类,而无需创建 Web 服务。

4

2 回答 2

0

你的“java脚本”的目的是什么

  1. 定期在 bakcground 中做某事。您可以使用 Quartz 框架自动触发作业。见Quartz 调度器
  2. 以确保某些东西正常工作。在我了解 junit 之前,我在课堂上运行了一个 main() 方法来查看某些东西是否正常工作。见junit
于 2012-03-23T02:07:18.570 回答
0

(首先,我在 SO 上发现了一个类似的问题,它比我的更简单易懂!)

实际上,我找到了两种从 Web 应用程序项目本身运行“脚本”的方法:

1)如果 Maven 安装在 prod 服务器上,您可以从生成的“目标”文件夹运行脚本,方法是在启动脚本时设置类路径:

~ cd /path/to/project/target/classes

~ java -classpath ./:/path/to/project/target/myProject-0.0.1-SNAPSHOT/WEB-INF/lib/* com.path.to.scripts.ScriptToRun

2) 也可以从 .war 被炸毁的 Web 服务器本身运行脚本。我使用Tomcat对其进行了测试:

~ cd /path/to/Tomcat/webapps/ROOT/WEB-INF/classes

~ java -classpath ./:/path/to/Tomcat/webapps/ROOT/WEB-INF/lib/* com.path.to.scripts.ScriptToRun

于 2012-03-23T18:40:21.947 回答