我正在开发一个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服务。
答案 0 :(得分:0)
“java脚本”的目的是什么
答案 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