表記の通りです。
JavaEEの本を読もうとしたら、プロジェクトを何度も作らなくてはいけなくて、前回のような作業を何度も繰り返すの面倒になったので、作った。
あとはgit clone
してgradle rmDummy
して、build.gradle
とsettings.gradle
に書かれている__APP_NAME__
をアプリケーションの名前に変えてgradle idea
すればIntelliJ IDEAでglassfish用のアプリケーションが簡単に作れる。
【2015/03/20 14:17 追記】 アプリケーション名とGradleプロジェクトの名前を動的にディレクトリー名から取得するように修正したので次のステップでプロジェクトを作れる。
git clone
するgradle rmDummy
タスクを走らせるgradle idea
タスクを走らせる
ちなみに、僕のマシンではこのテンプレートは次のような構造のtemplate
というディレクトリーにある。そしてその上のディレクトリーでgroovyclient create.groovy app-name
すればもっと簡単にテンプレートの複製ができるようになっている。
glass-fish-projects ├ create.groovy ← groovyスクリプト └ template ← 上記のレポジトリーの内容
create.groovy
の内容は次のとおり
import java.nio.file.* import static java.nio.file.FileVisitResult.* if (args.length != 1) { def msg = $/usage groovy(client) create.groovy app-name /$ println msg System.exit(1) } def appName = '__APP_NAME__' def path = Paths.get('template') def dist = Paths.get(args[0]) def name = args[0] def canCopyDir = {dir -> def p = dir.toString() ['.git', '.gradle', '.class', 'buildSrc/build'].findAll { p.contains(it) }.size() == 0 } def canCopyFile = {file -> if(file.endsWith('build.gradle') || file.endsWith('settings.gradle')) return true def p = file.toString() ['.git', '.gradle', '.class', 'dummy', 'buildSrc/build'].findAll { p.contains(it) }.size() == 0 } def visitor = [ postVisitDirectory: {dir, e -> if(e != null) throw e CONTINUE }, preVisitDirectory: {dir, attrs -> if(canCopyDir(dir)) { def p = path.relativize(dir) def d = dist.resolve(p) println "D: ${dir} -> ${d}" Files.createDirectories(d) } CONTINUE }, visitFile: {file, attrs -> if(canCopyFile(file)) { def p = path.relativize(file) def f = dist.resolve(p) println "F: ${file} -> ${f}" def contents = file.toFile().text.replace(appName, name) f.toFile().write(contents, 'UTF-8') } CONTINUE }, visitFileFailed: {file, e -> throw e } ] as FileVisitor Files.walkFileTree(path, visitor) println 'finished'