如何执行位于Spring MVC项目中的脚本(可执行类)?

时间:2012-03-23 01:25:24

标签: java spring deployment spring-mvc liquibase

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

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

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

本地我正在使用Eclipse并使用“Run As / Java Application”轻松运行这些“脚本”。但是我希望能够在我的prod服务器上运行它们,我不能使用eclipse来启动它们。我该怎么做才能在那里运行它们?

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

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

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

更新:我认为可以实现我想要的一种方式是让Web应用程序公开 Web服务作为运行任务的大门。然后我可以在命令行上使用 wget 或其他东西调用那些。但我更愿意直接联系课程,而无需创建Web服务。

2 个答案:

答案 0 :(得分:0)

“java脚本”的目的是什么

  1. 在bakcground定期做某事。您可以使用Quartz框架自动触发作业。见Quartz scheduler
  2. 确保某些内容正常运行。在我知道junit之前,我在我的类中运行了一个main()方法来查看某些东西是否正常工作。请参阅junit

答案 1 :(得分:0)

(首先,我发现a similar question on SO比我的更简单易懂!)

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

1)如果在prod服务器上安装了Maven,则可以通过在启动脚本时设置类路径来从生成的“target”文件夹运行脚本:

~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