Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “创建助手”;脚本“;用于基于JVM的项目_Java_Scala_Sbt - Fatal编程技术网

Java “创建助手”;脚本“;用于基于JVM的项目

Java “创建助手”;脚本“;用于基于JVM的项目,java,scala,sbt,Java,Scala,Sbt,我习惯于用Python编程。每当我创建项目时,通常都会有一个bin/文件夹,其中保存着各种脚本,例如: 从ORM创建数据库架构 基于其他内容生成一些代码(css、javascript等) 以图形方式可视化某些数据的脚本 在Scala(和Java)中做这类事情的最佳实践是什么。也许是自定义maven目标 我已经读到,有sbt任务,但它们不能使用应用程序本身的编译库 更新:这里是一个地方,上面说我不能将应用程序代码用于构建:我将对java方面的事情有所了解。如果您使用的是Maven,那么从Mav

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

  • 从ORM创建数据库架构
  • 基于其他内容生成一些代码(css、javascript等)
  • 以图形方式可视化某些数据的脚本
在Scala(和Java)中做这类事情的最佳实践是什么。也许是自定义maven目标

我已经读到,有sbt任务,但它们不能使用应用程序本身的编译库


更新:这里是一个地方,上面说我不能将应用程序代码用于构建:

我将对java方面的事情有所了解。如果您使用的是Maven,那么从Maven可以生成的简单项目原型开始。它将为您创建目录结构,您可以开始在其中添加内容。拥有脚本的
bin
目录是非常好的。也就是说,我仍然更喜欢在惯用Java中创建模式,而不是生成一些SQL文件。在我看来,从长远来看,它更安全、更可持续。例如,Hibernate使用注释,将在初始化Hibernate会话时为您创建DB/更新DB,这样您就不必为生成架构和将sql文件签入vcs等而烦恼。Maven有很多插件,可以根据您的需要进行操作,因此这将是首选的路径。如果没有,您可以让maven在
bin
目录中执行一个脚本


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

为什么不能?我不知道sbt,只有Ant/Maven/等等,但它们都可以使用项目工件。另一种常见的解决方案是使用批处理或shell文件。当然,您可以使用scala语法编写bash脚本,只需将这3行放在
.sh
文件的开头:
#/bin/sh
exec scala“$0”“$@”
#并使用常规的scala语法跟随它。@DaveNewton如何使用maven完成它?我认为是二进制文件,而不是scripts@EmilIvanov使用“exec”插件;它使用Maven类路径,其中包括项目的工件和依赖项。