为基于JVM的项目创建帮助程序“脚本”

时间:2012-11-29 14:09:08

标签: java scala sbt

我习惯用Python编程。每当我创建项目时,通常都会有一个bin/文件夹,其中保存了各种脚本,例如:

  • 从ORM创建数据库架构
  • 根据其他内容生成一些代码(css,javascript等)
  • 脚本以图形方式显示某些数据

在Scala(和Java)中执行此类操作的最佳做​​法是什么。可能是自定义maven目标?

我读过,有sbt任务,但他们不能使用应用程序本身的编译库。

更新:这是一个地方,它说我无法使用应用程序代码进行构建:sbt Task classpath

1 个答案:

答案 0 :(得分:0)

我会对Java方面有所了解。如果您正在使用Maven,请从maven可以生成的简单项目原型开始。它将为您创建目录结构,您可以开始在那里添加内容。拥有脚本的bin目录非常好。也就是说,我仍然喜欢在惯用Java中创建模式创建之类的东西,而不是生成一些SQL文件。在我看来,它更长久更安全,更可持续。 Hibernate,例如,使用注释,将在您初始化hibernate会话时为您创建数据库/更新它,这样您就不必混淆生成模式并将该sql文件检入到您的vcs等。 Maven确实有足够的插件可以做你想要的,所以这将是首选的路线。如果他们不这样做,您可以随时让maven在bin目录中执行您的一个脚本。

例如,在我的API项目中,我在servlet初始化时创建/更新我的Cassandra键空间和列族。这样,您就知道您的数据存储将始终是最新的(前提是每个人都将更改/更新添加到该init方法)。这消除了所有的麻烦......“废话它不起作用”“...哦,那是因为你没有创建列系列...从我们的git获取该文件...但它可能不是最新请求CassandraGuy为您导出最新的架构,然后将其导入您的cassandra实例“这并不能解决所有问题。人们仍然需要受到纪律处分,并思考他们正在做出哪些改变。如果有人决定在具有数百万行的现有MySQL表上的init中添加索引,那么请记住,当init完成索引创建时它肯定会锁定该表......这些情况仍然需要代码审查,计划等。 / p>