JBoss Forgeインストール

JBossForgeとは、

コマンドラインからJavaEEアプリケーションを生成することができる次世代のシェル

と書いてありました。

引用元:http://forge.jboss.org/

それってMavenとどう違うんでしょうか。

とりあえずインストール。
どうせだからソースコードからMavenを使ってビルドしてみることに。
OSはWindows8を使ってます。

必要なものは以下の通り。

  • JDK(1.4以上と書いてあったけど、1.5以上かな)
  • Maven3
  • Git

上記のものはインストール完了が前提。


まずはGitでソースコードを取得します。

git://github.com/forge/core.git

続いてMavenでビルドしてみる。

D:\jboss\workspace\core>mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Forge - Parent
[INFO] Forge - Targeted Event Bus
[INFO] Forge - Parser/Java API
[INFO] Forge - Parser/XML
[INFO] Forge - Shell API
[INFO] Forge - Maven Integration APIs
[INFO] Forge - Git Integration
[INFO] Forge - Test Harness
[INFO] Forge - Maven Project Model
[INFO] Forge - Parser/Java
[INFO] Forge - Shell
[INFO] Forge - Git Integration Tests
[INFO] Forge - Project Model Maven Tests
[INFO] Forge - Test Harness (Web)
[INFO] Forge - Java EE APIs
[INFO] Forge - Java EE Integration Impl & Plugins
[INFO] Forge - Scaffolding APIs
[INFO] Forge - Scaffolding Plugins
[INFO] Forge - Dev Plugins
[INFO] Forge - Scaffold Provider for Java Server Faces
[INFO] Forge - Modular Plugin Loader
[INFO] Forge - Tracking
[INFO] JBoss Forge - Distribution Build
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Forge - Parent 1.2.1.Final
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-java-version) @ forge-pa
rent ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-maven-version) @ forge-p
arent ---
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireJavaVersion failed wi
th message:
Detected JDK Version: 1.7.0-13 is not in the allowed range [1.6.0-30,1.7).
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Forge - Parent .................................... FAILURE [2.262s]
[INFO] Forge - Targeted Event Bus ........................ SKIPPED
[INFO] Forge - Parser/Java API ........................... SKIPPED
[INFO] Forge - Parser/XML ................................ SKIPPED
[INFO] Forge - Shell API ................................. SKIPPED
[INFO] Forge - Maven Integration APIs .................... SKIPPED
[INFO] Forge - Git Integration ........................... SKIPPED
[INFO] Forge - Test Harness .............................. SKIPPED
[INFO] Forge - Maven Project Model ....................... SKIPPED
[INFO] Forge - Parser/Java ............................... SKIPPED
[INFO] Forge - Shell ..................................... SKIPPED
[INFO] Forge - Git Integration Tests ..................... SKIPPED
[INFO] Forge - Project Model Maven Tests ................. SKIPPED
[INFO] Forge - Test Harness (Web) ........................ SKIPPED
[INFO] Forge - Java EE APIs .............................. SKIPPED
[INFO] Forge - Java EE Integration Impl & Plugins ........ SKIPPED
[INFO] Forge - Scaffolding APIs .......................... SKIPPED
[INFO] Forge - Scaffolding Plugins ....................... SKIPPED
[INFO] Forge - Dev Plugins ............................... SKIPPED
[INFO] Forge - Scaffold Provider for Java Server Faces ... SKIPPED
[INFO] Forge - Modular Plugin Loader ..................... SKIPPED
[INFO] Forge - Tracking .................................. SKIPPED
[INFO] JBoss Forge - Distribution Build .................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.955s
[INFO] Finished at: Tue Feb 26 02:04:38 JST 2013
[INFO] Final Memory: 12M/110M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.
1.1:enforce (enforce-maven-version) on project forge-parent: Some Enforcer rules
have failed. Look above for specific messages explaining why the rule failed. -
> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception

エラーが出ました。
JDKが1.7だったのがいけなかったらしい。

ちなみに、JAVA_HOMEにJREを指定している場合もエラーになります。
JDKを指定してください。

JAVA_HOMEに1.6を設定して再トライするもやっぱりBUILD FAILUREになった。
テストでエラーになっているようだったので、テストをスキップしてインストールしました。

mvn -Dmaven.test.skip=true install

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Forge - Parent .................................... SUCCESS [1.623s]
[INFO] Forge - Targeted Event Bus ........................ SUCCESS [1.095s]
[INFO] Forge - Parser/Java API ........................... SUCCESS [0.188s]
[INFO] Forge - Parser/XML ................................ SUCCESS [0.112s]
[INFO] Forge - Shell API ................................. SUCCESS [0.422s]
[INFO] Forge - Maven Integration APIs .................... SUCCESS [0.265s]
[INFO] Forge - Git Integration ........................... SUCCESS [0.103s]
[INFO] Forge - Test Harness .............................. SUCCESS [0.130s]
[INFO] Forge - Maven Project Model ....................... SUCCESS [0.190s]
[INFO] Forge - Parser/Java ............................... SUCCESS [0.203s]
[INFO] Forge - Shell ..................................... SUCCESS [1.011s]
[INFO] Forge - Git Integration Tests ..................... SUCCESS [0.309s]
[INFO] Forge - Project Model Maven Tests ................. SUCCESS [0.232s]
[INFO] Forge - Test Harness (Web) ........................ SUCCESS [29.675s]
[INFO] Forge - Java EE APIs .............................. SUCCESS [1.115s]
[INFO] Forge - Java EE Integration Impl & Plugins ........ SUCCESS [7.156s]
[INFO] Forge - Scaffolding APIs .......................... SUCCESS [0.768s]
[INFO] Forge - Scaffolding Plugins ....................... SUCCESS [1.067s]
[INFO] Forge - Dev Plugins ............................... SUCCESS [2.471s]
[INFO] Forge - Scaffold Provider for Java Server Faces ... SUCCESS [6.968s]
[INFO] Forge - Modular Plugin Loader ..................... SUCCESS [0.644s]
[INFO] Forge - Tracking .................................. SUCCESS [3.137s]
[INFO] JBoss Forge - Distribution Build .................. SUCCESS [1:53.029s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:54.120s
[INFO] Finished at: Tue Feb 26 03:01:06 JST 2013
[INFO] Final Memory: 65M/231M
[INFO] ------------------------------------------------------------------------

ようやく成功!

~\dist\targetの下にできあがったものがあります。
2013年2月27日現在では「forge-distribution-1.2.1.Final」ができている。

forge-distibution-1.2.1.Finalフォルダを任意の場所に配置して、環境変数を設定しておく。
FORGE_HOMEにフォルダを、PATHに%FORGE_HOME%\binを設定。

動作確認してみよう。
コマンドラインを開いて、「forge」と入力してEnter

D:\>forge
Failed loading: test.test:1.0.0-SNAPSHOT:moo
org.jboss.modules.ModuleNotFoundException: Module test.test:moo is not found in
local module loader @e80d1ff (roots: D:\forge-distribution-1.2.1.Final\modules,C

\Users\XXXXXXX\.forge\plugins,D
\)

at org.jboss.modules.LocalModuleLoader.findModule(LocalModuleLoader.java
:126)
at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:275)

at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:222)
at org.jboss.modules.LocalModuleLoader.preloadModule(LocalModuleLoader.j
ava:94)
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:204)
at org.jboss.forge.shell.Bootstrap.loadPlugins(Bootstrap.java:254)
at org.jboss.forge.shell.Bootstrap.access$200(Bootstrap.java:38)
at org.jboss.forge.shell.Bootstrap$1.run(Bootstrap.java:125)
at java.lang.Thread.run(Thread.java:662)
_____
| ___|__ _ __ __ _ ___
| |_ / _ \| `__/ _` |/ _ \ \\
| _| (_) | | | (_| | __/ //
|_| \___/|_| \__, |\___|
|___/

JBoss Forge, version [ 1.2.1.Final ] - JBoss, by Red Hat, Inc. [ http://forge.jb
oss.org ]

なんかExceptionが発生してるけど、立ち上がった。
コマンドリストを表示する命令(list-commands --all)を入力してみる。

[no project] D:\ $ list-command --all
list-command --all

ERROR*** No such command: list-command

Did you mean this ?
list-commands
[no project] D:\ $
[no project] D:\ $ list-commands --all

[FILE & RESOURCES]
cat* cd*
cp* edit*
find* fingerprint*
grep* list-web-resources*
ls ls*
mkdir* mv*
open* pick-up*
pwd* pwr*
rm* touch*
wc*

[FILES & RESOURCES]
ls

[OTHER]
alias* analytics info*
analytics* beans list-alternatives*
beans list-decorators* beans list-interceptors*
beans new-bean* beans new-conversation
beans new-qualifier* beans new-scope*
beans new-stereotype* beans setup*
constraint AssertFalse constraint AssertTrue
constraint DecimalMax constraint DecimalMin
constraint Digits constraint Future
constraint Max constraint Min
constraint NotNull constraint Null
constraint Past constraint Pattern
constraint Size constraint Valid
ejb add-transaction-attribute ejb new-ejb*
ejb setup* entity*
faces new-view* faces project-stage*
faces setup* faces*
field field boolean
field custom field int
field long field manyToMany
field manyToOne field number
field oneToMany field oneToOne
field string field temporal
git clone* git git-checkout*
git setup* gitignore create*
gitignore edit* gitignore list-templates*
gitignore setup* gitignore update-repo*
gitignore-edit add gitignore-edit list
gitignore-edit remove i18n add-locale*
i18n faces-setup* i18n get*
i18n put* i18n remove*
i18n setup* java list-imports
java new-annotation-element java new-annotation-type*
java new-class* java new-enum-const
java new-enum-type* java new-field
java new-interface* java new-method
java* jms setup*
jstl setup* jta setup*
persistence setup* persistence*
plugins new-plugin* plugins setup*
remove-constraint rest endpoint-from-entity*
rest setup* servlet setup*
servlet* soap setup*
unalias* validation setup*

[PROJECT]
build* execute-java*
maven remove-parent* maven set-artifactid*
maven set-groupid* maven set-parent*
maven set-version* mvn*
new-project* project add-dependency*
project add-known-plugin-repository* project add-known-repository*
project add-managed-dependency* project add-plugin-repository*
project add-repository* project find-dependency*
project find-managed-dependency* project install-facet*
project list-dependencies* project list-facets*
project list-managed-dependencies* project list-plugin-repositories*
project list-properties* project list-repositories*
project remove-dependency* project remove-facet*
project remove-managed-dependency* project remove-plugin-repository*
project remove-property* project remove-repository*
project set-property* project*
setup* shade exclude*
shade include* shade make-executable*
shade relocate* shade remove*
shade reset* shade setup*
test*

[SHELL ENVIRONMENT]
about* clear*
echo* exec*
exit* forge find-plugin*
forge git-plugin* forge install-plugin*
forge list-plugins* forge remove-plugin*
forge restart* forge source-plugin*
forge update* forge update-abort*
forge* help*
less* list-commands*
list-config* list-properties*
more* reset*
run* run-url*
set* version*
wait*

[UI GENERATION & SCAFFOLDING]
list-scaffold-providers* scaffold from-entity*
scaffold indexes* scaffold setup*
scaffold templates*

[VERSION CONTROL]
git*

(* = command accessible from current context)

JBossForgeを使って何ができるのか、次回はこいつでできることを探してみよう。