struts menuを利用したサンプルリンク集
http://demo.raibledesigns.com/struts-menu/index.jsp
cool menu
http://dhtmlcentral.com/projects/coolmenus/
ブログ アーカイブ
-
▼
2009
(28)
-
▼
8月
(28)
- JavaScript와 Ajax를 이용한 비동기식
- link
- タグファイル
- [DB]ナチャラルキー(自然キー)とサロゲートキー(代替キー)
- Version Number パターンによる排他制御
- [S2JDBC]排他制御について
- jquery - iframe
- jdk api window help file format
- Javaの理論と実践: 並行コレクション・クラス
- Tigerでのアノテーション 第1回: Javaコードにメタデータを追加する
- 実用的なXML: Java NIOへの取り組み バッファーおよびチャネルに寄り道する方法
- java.io VS java.nio
- XLSBeansExcelとJavaBeansをJava 5のアノテーションでマッピングするためのラ...
- Windows XP で使用可能なショートカット キー一覧
- Windows ショートカットキー
- 「設計書(Excelブック形式)からソースコードを自動生成」してしまう「blanco Framewo...
- Trac
- struts menuを利用したサンプルリンク集
- 개발 환경 구축 pukiwiki
- pukiwiki intall 1 - php + apache + mysql setup
- pukiwiki
- maven setup
- maven setup
- 第3回Seasar勉強会
- OGNL
- JSON-libでXMLのJSON化
- アノテーションのアノテーション
- s2strutsとsastrutsの違い
-
▼
8月
(28)
2009年8月12日水曜日
개발 환경 구축 pukiwiki
http://labo.kokodayo.com/wiki/dev/environment/Eclipse.html
Eclipse+Maven+SVN
http://labo.kokodayo.com/wiki/dev/environment/Maven.html
maven
Eclipse+Maven+SVN
http://labo.kokodayo.com/wiki/dev/environment/Maven.html
maven
pukiwiki intall 1 - php + apache + mysql setup
1. php + apache server install
30秒ではじめるPHP (phpdev)
何はともあれ↓ここでphpdevをダウンロードしてください。
http://prdownloads.sourceforge.net/phpdev5/phpdev423.exe
あ。既にPHPを使える環境にある人は結構です。「PHPをこれからはじめたい。でもどうやったら使えるの?」という前準備段階の人向けです。
本来、PHPを自分のパソコン上で動作させるには、大雑把に言っても、
Apacheのダウンロード
Apacheのインストール
Apacheの基本設定
PHPのダウンロード
PHPのインストール
PHPのApache用設定
MySQLのダウンロード
MySQLのインストール
MySQLの基本設定
このくらいのことは必要です。Webプログラミングを本業とする方ならば、上記のようなまっとうなインストール手順を学ぶべきだと思いますが、「ちょっと学んでみよう」という方にとっては、この複雑なインストール手順は敷居が高いと感じるでしょう。
そこで、phpdevの出番です。
phpdevのダウンロード
ダウンロードしたファイルを実行(ダブルクリック)
インストール画面右下の[Install]ボタンをクリック
完了
以上で、Apache+PHP+MySQLが全て、あなたのWindowsパソコンにインストールされます。正直、まっとうなインストール手順でやってた自分がアホらしくなりました。
アンインストールするのも簡単で、C:\phpdevフォルダをエクスプローラで丸ごと削除するだけです。
※但し、一度でもphpdevを実行した場合、メモリ中にphpdev関連のファイルが常駐していてアンインストールできない場合があります。そんなときは、一度コンピュータを再起動してから、該当フォルダを削除すればアンインストールできます。
phpdevのインストールが完了したら、C:\phpdev\2K-NT-XP-phpdev_start.batをダブルクリックするだけで、いつでもあなたのコンピュータ上で、Apache+PHP+MySQLが使える環境になります。
C:\phpdev\www以下にHTMLファイルや、PHPファイルなどのWeb関連ファイルを置けば、http://localhostで閲覧できるようになります。
phpdevは、これからPHPはじめようという人にはイチオシのフリーウェアです。
------------------------------------------------------------
출처: http://www.siela.net/php/phpdev/0301.php
インストーラが終了すると、Apache・mysqlなどがインストールされます。デフォルトでインストールした場合は、「c:\phpdev」に各ファイルがインストールされています。
・設定ファイル(httpd.conf)は「C:\phpdev\Apache\conf\httpd.conf」に格納されています。
・デフォルトルート(http://localhost/)へのパスは「C:\phpdev\www」です。
■アップデートモジュールの実行
アップデートモジュールが提供されている場合には、必ず実行します。
■phpdevの開始
「c:\phpdev\2K-NT-XP-phpdev_start.bat」(またはシステムに準じる名称のバッチ)をダブルクリックすると、自動的にApache・mysqlなどが開始されます。
URL「http://localhost/」をブラウザで開くと、Apacheが開始されたことを確認できます。(赤丸部分に「Apache」と表示があり、Apacheを通して実行されていることが分かります)
■phpinfo.phpの実行
「http://localhost/phpinfo.php」にアクセスすると、現在の設定を見ることができます。あわせて、PHPプログラムが正常に動作していることの確認にもなります。
デフォルトインストール直後の状態でも、さまざまな設定がされていることが分かります。設定値を修正する場合は、「C:\phpdev\Apache\conf\httpd.conf」などの設定ファイルの値を修正します。
※これらの初期設定は、セキュリティ的に脆弱性をもった状態になっています。初期設定の状態では必ずスタンドアロンで使用し、適切なセキュリティを設定してからネットワークに接続してください。
■Hello World!!
プログラミングではお約束の「Hello World」を表示させるプログラムを作成します。
エディタで次のコードを記述し、「hello.php」と名前を付けて保存します。
「hello.php」を「「C:\phpdev\www」内に格納し、「http://localhost/hello.php」にアクセスします。次の画面が表示されれば、記述した「Hello World」PHPプログラムが正常に動作しています。
■phpdevの終了
phpdevは通常は起動したままで問題ありませんが、Win2000上でIISと併用する場合などは、次の手順でphpdevを終了させることが必要です。
(1)「c:\phpdev\phpdev_stop.bat」が存在する場合は実行する。
(2)(1)が存在しない場合、プロンプトとして実行されている「C:\phpdev\Apache\Apache.exe」を終了する。
(3)(1)が存在しない場合、「Apache Service Monitor」が実行されていたら終了する。
(4)「コントロールパネル→管理ツール→サービス」を確認し、不要なプログラムが起動されていたら終了する。
30秒ではじめるPHP (phpdev)
何はともあれ↓ここでphpdevをダウンロードしてください。
http://prdownloads.sourceforge.net/phpdev5/phpdev423.exe
あ。既にPHPを使える環境にある人は結構です。「PHPをこれからはじめたい。でもどうやったら使えるの?」という前準備段階の人向けです。
本来、PHPを自分のパソコン上で動作させるには、大雑把に言っても、
Apacheのダウンロード
Apacheのインストール
Apacheの基本設定
PHPのダウンロード
PHPのインストール
PHPのApache用設定
MySQLのダウンロード
MySQLのインストール
MySQLの基本設定
このくらいのことは必要です。Webプログラミングを本業とする方ならば、上記のようなまっとうなインストール手順を学ぶべきだと思いますが、「ちょっと学んでみよう」という方にとっては、この複雑なインストール手順は敷居が高いと感じるでしょう。
そこで、phpdevの出番です。
phpdevのダウンロード
ダウンロードしたファイルを実行(ダブルクリック)
インストール画面右下の[Install]ボタンをクリック
完了
以上で、Apache+PHP+MySQLが全て、あなたのWindowsパソコンにインストールされます。正直、まっとうなインストール手順でやってた自分がアホらしくなりました。
アンインストールするのも簡単で、C:\phpdevフォルダをエクスプローラで丸ごと削除するだけです。
※但し、一度でもphpdevを実行した場合、メモリ中にphpdev関連のファイルが常駐していてアンインストールできない場合があります。そんなときは、一度コンピュータを再起動してから、該当フォルダを削除すればアンインストールできます。
phpdevのインストールが完了したら、C:\phpdev\2K-NT-XP-phpdev_start.batをダブルクリックするだけで、いつでもあなたのコンピュータ上で、Apache+PHP+MySQLが使える環境になります。
C:\phpdev\www以下にHTMLファイルや、PHPファイルなどのWeb関連ファイルを置けば、http://localhostで閲覧できるようになります。
phpdevは、これからPHPはじめようという人にはイチオシのフリーウェアです。
------------------------------------------------------------
출처: http://www.siela.net/php/phpdev/0301.php
インストーラが終了すると、Apache・mysqlなどがインストールされます。デフォルトでインストールした場合は、「c:\phpdev」に各ファイルがインストールされています。
・設定ファイル(httpd.conf)は「C:\phpdev\Apache\conf\httpd.conf」に格納されています。
・デフォルトルート(http://localhost/)へのパスは「C:\phpdev\www」です。
■アップデートモジュールの実行
アップデートモジュールが提供されている場合には、必ず実行します。
■phpdevの開始
「c:\phpdev\2K-NT-XP-phpdev_start.bat」(またはシステムに準じる名称のバッチ)をダブルクリックすると、自動的にApache・mysqlなどが開始されます。
URL「http://localhost/」をブラウザで開くと、Apacheが開始されたことを確認できます。(赤丸部分に「Apache」と表示があり、Apacheを通して実行されていることが分かります)
■phpinfo.phpの実行
「http://localhost/phpinfo.php」にアクセスすると、現在の設定を見ることができます。あわせて、PHPプログラムが正常に動作していることの確認にもなります。
デフォルトインストール直後の状態でも、さまざまな設定がされていることが分かります。設定値を修正する場合は、「C:\phpdev\Apache\conf\httpd.conf」などの設定ファイルの値を修正します。
※これらの初期設定は、セキュリティ的に脆弱性をもった状態になっています。初期設定の状態では必ずスタンドアロンで使用し、適切なセキュリティを設定してからネットワークに接続してください。
■Hello World!!
プログラミングではお約束の「Hello World」を表示させるプログラムを作成します。
エディタで次のコードを記述し、「hello.php」と名前を付けて保存します。
「hello.php」を「「C:\phpdev\www」内に格納し、「http://localhost/hello.php」にアクセスします。次の画面が表示されれば、記述した「Hello World」PHPプログラムが正常に動作しています。
■phpdevの終了
phpdevは通常は起動したままで問題ありませんが、Win2000上でIISと併用する場合などは、次の手順でphpdevを終了させることが必要です。
(1)「c:\phpdev\phpdev_stop.bat」が存在する場合は実行する。
(2)(1)が存在しない場合、プロンプトとして実行されている「C:\phpdev\Apache\Apache.exe」を終了する。
(3)(1)が存在しない場合、「Apache Service Monitor」が実行されていたら終了する。
(4)「コントロールパネル→管理ツール→サービス」を確認し、不要なプログラムが起動されていたら終了する。
pukiwiki
출처
http://labo.kokodayo.com/wiki/PukiWiki.html
PukiWiki †
* http://pukiwiki.sourceforge.jp/
* http://sourceforge.jp/projects/pukiwiki/
PukiWikiは Wiki(WikiWikiWeb) と呼ばれているもののひとつで、基本的に誰でも全てのページを作成・編集することができます。
また、編集には特別な知識を要することなく、簡単なルールに従うだけで整形されたHTML文書を生成できます。
* 漢字をサポートしています。日本語のページ名もOK!
* 全てのデータはテキストファイルに保存されます
* 定期的にバックアップが保存されるので、復旧も簡単
* ページ単位の凍結なども可能です
* URLを短く表現できるInterWikiをサポート
* PHPで書かれています
* ライセンスはGPL*1です
↑
リンク †
* PukiWiki-official からPukiWiki 公式サイトへ飛べます
o ご質問や御意見は、こちらへどうぞ。 :)
* Pukiwiki-dev - http://pukiwiki.sourceforge.jp/dev/
o こちらはPukiWiki開発サイトです。PukiWiki開発サイトでは、次期バージョンの開発だけでなく、現行バージョンの1.4系や1.3系の修正、セキュリティfixが行なわれています。pukiwiki.dev:開発日記で日々の作業の内容が掲載されていますので、PukiWikiを運用されている方は目を通すようお願いします。
* http://sourceforge.jp/projects/pukiwiki/
o Sourceforge のプロジェクトサマリです。PukiWikiのダウンロードはこちらからどうぞ。
↑
関連ページ †
* PukiWiki/使用プラグイン
http://labo.kokodayo.com/wiki/PukiWiki.html
PukiWiki †
* http://pukiwiki.sourceforge.jp/
* http://sourceforge.jp/projects/pukiwiki/
PukiWikiは Wiki(WikiWikiWeb) と呼ばれているもののひとつで、基本的に誰でも全てのページを作成・編集することができます。
また、編集には特別な知識を要することなく、簡単なルールに従うだけで整形されたHTML文書を生成できます。
* 漢字をサポートしています。日本語のページ名もOK!
* 全てのデータはテキストファイルに保存されます
* 定期的にバックアップが保存されるので、復旧も簡単
* ページ単位の凍結なども可能です
* URLを短く表現できるInterWikiをサポート
* PHPで書かれています
* ライセンスはGPL*1です
↑
リンク †
* PukiWiki-official からPukiWiki 公式サイトへ飛べます
o ご質問や御意見は、こちらへどうぞ。 :)
* Pukiwiki-dev - http://pukiwiki.sourceforge.jp/dev/
o こちらはPukiWiki開発サイトです。PukiWiki開発サイトでは、次期バージョンの開発だけでなく、現行バージョンの1.4系や1.3系の修正、セキュリティfixが行なわれています。pukiwiki.dev:開発日記で日々の作業の内容が掲載されていますので、PukiWikiを運用されている方は目を通すようお願いします。
* http://sourceforge.jp/projects/pukiwiki/
o Sourceforge のプロジェクトサマリです。PukiWikiのダウンロードはこちらからどうぞ。
↑
関連ページ †
* PukiWiki/使用プラグイン
2009年8月10日月曜日
maven setup
Introduction
Quick Overview
The settings element in the settings.xml file contains elements used to define values which configure Maven execution in various ways, like the pom.xml, but should not be bundled to any specific project, or distributed to an audience. These include values such as the local repository location, alternate remote repository servers, and authentication information. There are two locations where a settings.xml file may live:
* The Maven install: $M2_HOME/conf/settings.xml
* A user's install: ${user.home}/.m2/settings.xml
Here is an overview of the top elements under settings:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
Settings Details
Simple Values
Half of the top-level settings elements are simple values, representing a range of values which describe elements of the build system that are active full-time.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
${user.home}/.m2/repository
true
false
false
org.mortbay.jetty
...
* localRepository: This value is the path of this build system's local repository. The default value is ${user.home}/.m2/repository. This element is especially useful for a main build server allowing all logged-in users to build from a common local repository.
* interactiveMode: true if Maven should attempt to interact with the user for input, false if not. Defaults to true.
* usePluginRegistry: true if Maven should use the ${user.home}/.m2/plugin-registry.xml file to manage plugin versions, defaults to false. Note that for the current version of Maven 2.0, the plugin-registry.xml file should not be depended upon. Consider it dormant for now.
* offline: true if this build system should operate in offline mode, defaults to false. This element is useful for build servers which cannot connect to a remote repository, either because of network setup or security reasons.
* pluginGroups: This element contains a list of pluginGroup elements, each contains a groupId. The list is searched when a plugin is used and the groupId is not provided in the command line. This list automatically contains org.apache.maven.plugins and org.codehaus.mojo. For example, given the above settings the Maven command line may execute org.mortbay.jetty:jetty-maven-plugin:run with the truncated command:
mvn jetty:run
Servers
The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
server001
my_login
my_password
${user.home}/.ssh/id_dsa
some_passphrase
664
775
...
* id: This is the ID of the server (not of the user to login as) that matches the id element of the repository/mirror that Maven tries to connect to.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this server.
* privateKey, passphrase: Like the previous two elements, this pair specifies a path to a private key (default is ${user.home}/.ssh/id_dsa) and a passphrase, if required. The passphrase and password elements may be externalized in the future, but for now they must be set plain-text in the settings.xml file.
* filePermissions, directoryPermissions: When a repository file or directory is created on deployment, these are the permissions to use. The legal values of each is a three digit number corrosponding to *nix file permissions, ie. 664, or 775.
Note: If you use a private key to login to the server, make sure you omit the element. Otherwise, the key will be ignored.
Password Encryption
A new feature - server password and passphrase encryption has been added to 2.1.x and 3.0 trunks. See details on this page
Mirrors
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
planetmirror.com
PlanetMirror Australia
http://downloads.planetmirror.com/pub/maven2
central
...
* id, name: The unique identifier and user-friendly name of this mirror. The id is used to differentiate between mirror elements and to pick the corresponding credentials from the section when connecting to the mirror.
* url: The base URL of this mirror. The build system will use this URL to connect to a repository rather than the original repository URL.
* mirrorOf: The id of the repository that this is a mirror of. For example, to point to a mirror of the Maven central repository (http://repo1.maven.org/maven2/), set this element to central. More advanced mappings like repo1,repo2 or *,!inhouse are also possible. This must not match the mirror id.
For a more in-depth introduction of mirrors, please read the Guide to Mirror Settings.
Proxies
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
myproxy
true
http
proxy.somewhere.com
8080
proxyuser
somepassword
*.google.com|ibiblio.org
...
* id: The unique identifier for this proxy. This is used to differentiate between proxy elements.
* active: true if this proxy is active. This is useful for declaring a set of proxies, but only one may be active at a time.
* protocol, host, port: The protocol://host:port of the proxy, seperated into discrete elements.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this proxy server.
* nonProxyHosts: This is a list of hosts which should not be proxied. The delimiter of the list is the expected type of the proxy server; the example above is pipe delimited - comma delimited is also common.
Profiles
The profile element in the settings.xml is a truncated version of the pom.xml profile element. It consists of the activation, repositories, pluginRepositories and properties elements. The profile elements only include these four elements because they concerns themselves with the build system as a whole (which is the role of the settings.xml file), not about individual project object model settings.
If a profile is active from settings, its values will override any equivalently ID'd profiles in a POM or profiles.xml file.
Activation
Activations are the key of a profile. Like the POM's profiles, the power of a profile comes from its ability to modify some values only under certain circumstances; those circumstances are specified via an activation element.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
test
false
1.5
Windows XP
Windows
x86
5.1.2600
mavenVersion
2.0.3
${basedir}/file2.properties
${basedir}/file1.properties
...
...
Activation occurs when all specified criteria have been met, though not all are required at once.
* jdk: activation has a built in, Java-centric check in the jdk element. This will activate if the test is run under a jdk version number that matches the prefix given. In the above example, 1.5.0_06 will match. Ranges are also supported as of Maven 2.1. See the maven-enforcer-plugin for more details about supported ranges.
* os: The os element can define some operating system specific properties shown above. See the maven-enforcer-plugin for more details about OS values.
* property: The profile will activate if Maven detects a property (a value which can be dereferenced within the POM by ${name}) of the corresponding name=value pair.
* file: Finally, a given filename may activate the profile by the existence of a file, or if it is missing.
The activation element is not the only way that a profile may be activated. The settings.xml file's activeProfile element may contain the profile's id. They may also be activated explicitly through the command line via a comma separated list after the -P flag (e.g. -P test).
To see which profile will activate in a certain build, use the maven-help-plugin.
mvn help:active-profiles
Properties
Maven properties are value placeholder, like properties in Ant. Their values are accessible anywhere within a POM by using the notation ${X}, where X is the property. They come in five different styles, all accessible from the settings.xml file:
1. env.X: Prefixing a variable with "env." will return the shell's environment variable. For example, ${env.PATH} contains the $path environment variable (%PATH% in Windows).
2. project.x: A dot (.) notated path in the POM will contain the corresponding element's value. For example:1.0 is accessible via ${project.version}.
3. settings.x: A dot (.) notated path in the settings.xml will contain the corresponding element's value. For example:false is accessible via ${settings.offline}.
4. Java System Properties: All properties accessible via java.lang.System.getProperties() are available as POM properties, such as ${java.home}.
5. x: Set within a element or an external files, the value may be used as ${someVar}.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
${user.home}/our-project
...
...
The property ${user.install} is accessible from a POM if this profile is active.
Repositories
Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
codehausSnapshots
Codehaus Snapshots
false
always
warn
true
never
fail
http://snapshots.maven.codehaus.org/maven2
default
...
...
...
* releases, snapshots: These are the policies for each type of artifact, Release or snapshot. With these two sets, a POM has the power to alter the policies for each type independent of the other within a single repository. For example, one may decide to enable only snapshot downloads, possibly for development purposes.
* enabled: true or false for whether this repository is enabled for the respective type (releases or snapshots).
* updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM's timestamp (stored in a repository's maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
* checksumPolicy: When Maven deploys files to the repository, it also deploys corresponding checksum files. Your options are to ignore, fail, or warn on missing or incorrect checksums.
* layout: In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy.
Plugin Repositories
Repositories are home to two major types of artifacts. The first are artifacts that are used as dependencies of other artifacts. These are the majority of plugins that reside within central. The other type of artifact is plugins. Maven plugins are themselves a special type of artifact. Because of this, plugin repositories may be separated from other repositories (although, I have yet to hear a convincing argument for doing so). In any case, the structure of the pluginRepositories element block is similar to the repositories element. The pluginRepository elements each specify a remote location of where Maven can find new plugins.
Active Profiles
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
env-test
The final piece of the settings.xml puzzle is the activeProfiles element. This contains a set of activeProfile elements, which each have a value of a profile id. Any profile id defined as an activeProfile will be active, reguardless of any environment settings. If no matching profile is found nothing will happen. For example, if env-test is an activeProfile, a profile in a pom.xml (or profile.xml with a corrosponding id will be active. If no such profile is found then execution will continue as normal.
Quick Overview
The settings element in the settings.xml file contains elements used to define values which configure Maven execution in various ways, like the pom.xml, but should not be bundled to any specific project, or distributed to an audience. These include values such as the local repository location, alternate remote repository servers, and authentication information. There are two locations where a settings.xml file may live:
* The Maven install: $M2_HOME/conf/settings.xml
* A user's install: ${user.home}/.m2/settings.xml
Here is an overview of the top elements under settings:
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
Settings Details
Simple Values
Half of the top-level settings elements are simple values, representing a range of values which describe elements of the build system that are active full-time.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
* localRepository: This value is the path of this build system's local repository. The default value is ${user.home}/.m2/repository. This element is especially useful for a main build server allowing all logged-in users to build from a common local repository.
* interactiveMode: true if Maven should attempt to interact with the user for input, false if not. Defaults to true.
* usePluginRegistry: true if Maven should use the ${user.home}/.m2/plugin-registry.xml file to manage plugin versions, defaults to false. Note that for the current version of Maven 2.0, the plugin-registry.xml file should not be depended upon. Consider it dormant for now.
* offline: true if this build system should operate in offline mode, defaults to false. This element is useful for build servers which cannot connect to a remote repository, either because of network setup or security reasons.
* pluginGroups: This element contains a list of pluginGroup elements, each contains a groupId. The list is searched when a plugin is used and the groupId is not provided in the command line. This list automatically contains org.apache.maven.plugins and org.codehaus.mojo. For example, given the above settings the Maven command line may execute org.mortbay.jetty:jetty-maven-plugin:run with the truncated command:
mvn jetty:run
Servers
The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
* id: This is the ID of the server (not of the user to login as) that matches the id element of the repository/mirror that Maven tries to connect to.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this server.
* privateKey, passphrase: Like the previous two elements, this pair specifies a path to a private key (default is ${user.home}/.ssh/id_dsa) and a passphrase, if required. The passphrase and password elements may be externalized in the future, but for now they must be set plain-text in the settings.xml file.
* filePermissions, directoryPermissions: When a repository file or directory is created on deployment, these are the permissions to use. The legal values of each is a three digit number corrosponding to *nix file permissions, ie. 664, or 775.
Note: If you use a private key to login to the server, make sure you omit the
Password Encryption
A new feature - server password and passphrase encryption has been added to 2.1.x and 3.0 trunks. See details on this page
Mirrors
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
* id, name: The unique identifier and user-friendly name of this mirror. The id is used to differentiate between mirror elements and to pick the corresponding credentials from the
* url: The base URL of this mirror. The build system will use this URL to connect to a repository rather than the original repository URL.
* mirrorOf: The id of the repository that this is a mirror of. For example, to point to a mirror of the Maven central repository (http://repo1.maven.org/maven2/), set this element to central. More advanced mappings like repo1,repo2 or *,!inhouse are also possible. This must not match the mirror id.
For a more in-depth introduction of mirrors, please read the Guide to Mirror Settings.
Proxies
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
* id: The unique identifier for this proxy. This is used to differentiate between proxy elements.
* active: true if this proxy is active. This is useful for declaring a set of proxies, but only one may be active at a time.
* protocol, host, port: The protocol://host:port of the proxy, seperated into discrete elements.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this proxy server.
* nonProxyHosts: This is a list of hosts which should not be proxied. The delimiter of the list is the expected type of the proxy server; the example above is pipe delimited - comma delimited is also common.
Profiles
The profile element in the settings.xml is a truncated version of the pom.xml profile element. It consists of the activation, repositories, pluginRepositories and properties elements. The profile elements only include these four elements because they concerns themselves with the build system as a whole (which is the role of the settings.xml file), not about individual project object model settings.
If a profile is active from settings, its values will override any equivalently ID'd profiles in a POM or profiles.xml file.
Activation
Activations are the key of a profile. Like the POM's profiles, the power of a profile comes from its ability to modify some values only under certain circumstances; those circumstances are specified via an activation element.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
...
Activation occurs when all specified criteria have been met, though not all are required at once.
* jdk: activation has a built in, Java-centric check in the jdk element. This will activate if the test is run under a jdk version number that matches the prefix given. In the above example, 1.5.0_06 will match. Ranges are also supported as of Maven 2.1. See the maven-enforcer-plugin for more details about supported ranges.
* os: The os element can define some operating system specific properties shown above. See the maven-enforcer-plugin for more details about OS values.
* property: The profile will activate if Maven detects a property (a value which can be dereferenced within the POM by ${name}) of the corresponding name=value pair.
* file: Finally, a given filename may activate the profile by the existence of a file, or if it is missing.
The activation element is not the only way that a profile may be activated. The settings.xml file's activeProfile element may contain the profile's id. They may also be activated explicitly through the command line via a comma separated list after the -P flag (e.g. -P test).
To see which profile will activate in a certain build, use the maven-help-plugin.
mvn help:active-profiles
Properties
Maven properties are value placeholder, like properties in Ant. Their values are accessible anywhere within a POM by using the notation ${X}, where X is the property. They come in five different styles, all accessible from the settings.xml file:
1. env.X: Prefixing a variable with "env." will return the shell's environment variable. For example, ${env.PATH} contains the $path environment variable (%PATH% in Windows).
2. project.x: A dot (.) notated path in the POM will contain the corresponding element's value. For example:
3. settings.x: A dot (.) notated path in the settings.xml will contain the corresponding element's value. For example:
4. Java System Properties: All properties accessible via java.lang.System.getProperties() are available as POM properties, such as ${java.home}.
5. x: Set within a
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
...
...
The property ${user.install} is accessible from a POM if this profile is active.
Repositories
Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
...
...
...
* releases, snapshots: These are the policies for each type of artifact, Release or snapshot. With these two sets, a POM has the power to alter the policies for each type independent of the other within a single repository. For example, one may decide to enable only snapshot downloads, possibly for development purposes.
* enabled: true or false for whether this repository is enabled for the respective type (releases or snapshots).
* updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM's timestamp (stored in a repository's maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
* checksumPolicy: When Maven deploys files to the repository, it also deploys corresponding checksum files. Your options are to ignore, fail, or warn on missing or incorrect checksums.
* layout: In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy.
Plugin Repositories
Repositories are home to two major types of artifacts. The first are artifacts that are used as dependencies of other artifacts. These are the majority of plugins that reside within central. The other type of artifact is plugins. Maven plugins are themselves a special type of artifact. Because of this, plugin repositories may be separated from other repositories (although, I have yet to hear a convincing argument for doing so). In any case, the structure of the pluginRepositories element block is similar to the repositories element. The pluginRepository elements each specify a remote location of where Maven can find new plugins.
Active Profiles
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
The final piece of the settings.xml puzzle is the activeProfiles element. This contains a set of activeProfile elements, which each have a value of a profile id. Any profile id defined as an activeProfile will be active, reguardless of any environment settings. If no matching profile is found nothing will happen. For example, if env-test is an activeProfile, a profile in a pom.xml (or profile.xml with a corrosponding id will be active. If no such profile is found then execution will continue as normal.
maven setup
Introduction
Quick Overview
The settings element in the settings.xml file contains elements used to define values which configure Maven execution in various ways, like the pom.xml, but should not be bundled to any specific project, or distributed to an audience. These include values such as the local repository location, alternate remote repository servers, and authentication information. There are two locations where a settings.xml file may live:
* The Maven install: $M2_HOME/conf/settings.xml
* A user's install: ${user.home}/.m2/settings.xml
Here is an overview of the top elements under settings:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
Settings Details
Simple Values
Half of the top-level settings elements are simple values, representing a range of values which describe elements of the build system that are active full-time.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
${user.home}/.m2/repository
true
false
false
org.mortbay.jetty
...
* localRepository: This value is the path of this build system's local repository. The default value is ${user.home}/.m2/repository. This element is especially useful for a main build server allowing all logged-in users to build from a common local repository.
* interactiveMode: true if Maven should attempt to interact with the user for input, false if not. Defaults to true.
* usePluginRegistry: true if Maven should use the ${user.home}/.m2/plugin-registry.xml file to manage plugin versions, defaults to false. Note that for the current version of Maven 2.0, the plugin-registry.xml file should not be depended upon. Consider it dormant for now.
* offline: true if this build system should operate in offline mode, defaults to false. This element is useful for build servers which cannot connect to a remote repository, either because of network setup or security reasons.
* pluginGroups: This element contains a list of pluginGroup elements, each contains a groupId. The list is searched when a plugin is used and the groupId is not provided in the command line. This list automatically contains org.apache.maven.plugins and org.codehaus.mojo. For example, given the above settings the Maven command line may execute org.mortbay.jetty:jetty-maven-plugin:run with the truncated command:
mvn jetty:run
Servers
The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
server001
my_login
my_password
${user.home}/.ssh/id_dsa
some_passphrase
664
775
...
* id: This is the ID of the server (not of the user to login as) that matches the id element of the repository/mirror that Maven tries to connect to.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this server.
* privateKey, passphrase: Like the previous two elements, this pair specifies a path to a private key (default is ${user.home}/.ssh/id_dsa) and a passphrase, if required. The passphrase and password elements may be externalized in the future, but for now they must be set plain-text in the settings.xml file.
* filePermissions, directoryPermissions: When a repository file or directory is created on deployment, these are the permissions to use. The legal values of each is a three digit number corrosponding to *nix file permissions, ie. 664, or 775.
Note: If you use a private key to login to the server, make sure you omit the element. Otherwise, the key will be ignored.
Password Encryption
A new feature - server password and passphrase encryption has been added to 2.1.x and 3.0 trunks. See details on this page
Mirrors
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
planetmirror.com
PlanetMirror Australia
http://downloads.planetmirror.com/pub/maven2
central
...
* id, name: The unique identifier and user-friendly name of this mirror. The id is used to differentiate between mirror elements and to pick the corresponding credentials from the section when connecting to the mirror.
* url: The base URL of this mirror. The build system will use this URL to connect to a repository rather than the original repository URL.
* mirrorOf: The id of the repository that this is a mirror of. For example, to point to a mirror of the Maven central repository (http://repo1.maven.org/maven2/), set this element to central. More advanced mappings like repo1,repo2 or *,!inhouse are also possible. This must not match the mirror id.
For a more in-depth introduction of mirrors, please read the Guide to Mirror Settings.
Proxies
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
myproxy
true
http
proxy.somewhere.com
8080
proxyuser
somepassword
*.google.com|ibiblio.org
...
* id: The unique identifier for this proxy. This is used to differentiate between proxy elements.
* active: true if this proxy is active. This is useful for declaring a set of proxies, but only one may be active at a time.
* protocol, host, port: The protocol://host:port of the proxy, seperated into discrete elements.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this proxy server.
* nonProxyHosts: This is a list of hosts which should not be proxied. The delimiter of the list is the expected type of the proxy server; the example above is pipe delimited - comma delimited is also common.
Profiles
The profile element in the settings.xml is a truncated version of the pom.xml profile element. It consists of the activation, repositories, pluginRepositories and properties elements. The profile elements only include these four elements because they concerns themselves with the build system as a whole (which is the role of the settings.xml file), not about individual project object model settings.
If a profile is active from settings, its values will override any equivalently ID'd profiles in a POM or profiles.xml file.
Activation
Activations are the key of a profile. Like the POM's profiles, the power of a profile comes from its ability to modify some values only under certain circumstances; those circumstances are specified via an activation element.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
test
false
1.5
Windows XP
Windows
x86
5.1.2600
mavenVersion
2.0.3
${basedir}/file2.properties
${basedir}/file1.properties
...
...
Activation occurs when all specified criteria have been met, though not all are required at once.
* jdk: activation has a built in, Java-centric check in the jdk element. This will activate if the test is run under a jdk version number that matches the prefix given. In the above example, 1.5.0_06 will match. Ranges are also supported as of Maven 2.1. See the maven-enforcer-plugin for more details about supported ranges.
* os: The os element can define some operating system specific properties shown above. See the maven-enforcer-plugin for more details about OS values.
* property: The profile will activate if Maven detects a property (a value which can be dereferenced within the POM by ${name}) of the corresponding name=value pair.
* file: Finally, a given filename may activate the profile by the existence of a file, or if it is missing.
The activation element is not the only way that a profile may be activated. The settings.xml file's activeProfile element may contain the profile's id. They may also be activated explicitly through the command line via a comma separated list after the -P flag (e.g. -P test).
To see which profile will activate in a certain build, use the maven-help-plugin.
mvn help:active-profiles
Properties
Maven properties are value placeholder, like properties in Ant. Their values are accessible anywhere within a POM by using the notation ${X}, where X is the property. They come in five different styles, all accessible from the settings.xml file:
1. env.X: Prefixing a variable with "env." will return the shell's environment variable. For example, ${env.PATH} contains the $path environment variable (%PATH% in Windows).
2. project.x: A dot (.) notated path in the POM will contain the corresponding element's value. For example:1.0 is accessible via ${project.version}.
3. settings.x: A dot (.) notated path in the settings.xml will contain the corresponding element's value. For example:false is accessible via ${settings.offline}.
4. Java System Properties: All properties accessible via java.lang.System.getProperties() are available as POM properties, such as ${java.home}.
5. x: Set within a element or an external files, the value may be used as ${someVar}.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
${user.home}/our-project
...
...
The property ${user.install} is accessible from a POM if this profile is active.
Repositories
Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
codehausSnapshots
Codehaus Snapshots
false
always
warn
true
never
fail
http://snapshots.maven.codehaus.org/maven2
default
...
...
...
* releases, snapshots: These are the policies for each type of artifact, Release or snapshot. With these two sets, a POM has the power to alter the policies for each type independent of the other within a single repository. For example, one may decide to enable only snapshot downloads, possibly for development purposes.
* enabled: true or false for whether this repository is enabled for the respective type (releases or snapshots).
* updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM's timestamp (stored in a repository's maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
* checksumPolicy: When Maven deploys files to the repository, it also deploys corresponding checksum files. Your options are to ignore, fail, or warn on missing or incorrect checksums.
* layout: In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy.
Plugin Repositories
Repositories are home to two major types of artifacts. The first are artifacts that are used as dependencies of other artifacts. These are the majority of plugins that reside within central. The other type of artifact is plugins. Maven plugins are themselves a special type of artifact. Because of this, plugin repositories may be separated from other repositories (although, I have yet to hear a convincing argument for doing so). In any case, the structure of the pluginRepositories element block is similar to the repositories element. The pluginRepository elements each specify a remote location of where Maven can find new plugins.
Active Profiles
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
env-test
The final piece of the settings.xml puzzle is the activeProfiles element. This contains a set of activeProfile elements, which each have a value of a profile id. Any profile id defined as an activeProfile will be active, reguardless of any environment settings. If no matching profile is found nothing will happen. For example, if env-test is an activeProfile, a profile in a pom.xml (or profile.xml with a corrosponding id will be active. If no such profile is found then execution will continue as normal.
Quick Overview
The settings element in the settings.xml file contains elements used to define values which configure Maven execution in various ways, like the pom.xml, but should not be bundled to any specific project, or distributed to an audience. These include values such as the local repository location, alternate remote repository servers, and authentication information. There are two locations where a settings.xml file may live:
* The Maven install: $M2_HOME/conf/settings.xml
* A user's install: ${user.home}/.m2/settings.xml
Here is an overview of the top elements under settings:
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
Settings Details
Simple Values
Half of the top-level settings elements are simple values, representing a range of values which describe elements of the build system that are active full-time.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
* localRepository: This value is the path of this build system's local repository. The default value is ${user.home}/.m2/repository. This element is especially useful for a main build server allowing all logged-in users to build from a common local repository.
* interactiveMode: true if Maven should attempt to interact with the user for input, false if not. Defaults to true.
* usePluginRegistry: true if Maven should use the ${user.home}/.m2/plugin-registry.xml file to manage plugin versions, defaults to false. Note that for the current version of Maven 2.0, the plugin-registry.xml file should not be depended upon. Consider it dormant for now.
* offline: true if this build system should operate in offline mode, defaults to false. This element is useful for build servers which cannot connect to a remote repository, either because of network setup or security reasons.
* pluginGroups: This element contains a list of pluginGroup elements, each contains a groupId. The list is searched when a plugin is used and the groupId is not provided in the command line. This list automatically contains org.apache.maven.plugins and org.codehaus.mojo. For example, given the above settings the Maven command line may execute org.mortbay.jetty:jetty-maven-plugin:run with the truncated command:
mvn jetty:run
Servers
The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
* id: This is the ID of the server (not of the user to login as) that matches the id element of the repository/mirror that Maven tries to connect to.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this server.
* privateKey, passphrase: Like the previous two elements, this pair specifies a path to a private key (default is ${user.home}/.ssh/id_dsa) and a passphrase, if required. The passphrase and password elements may be externalized in the future, but for now they must be set plain-text in the settings.xml file.
* filePermissions, directoryPermissions: When a repository file or directory is created on deployment, these are the permissions to use. The legal values of each is a three digit number corrosponding to *nix file permissions, ie. 664, or 775.
Note: If you use a private key to login to the server, make sure you omit the
Password Encryption
A new feature - server password and passphrase encryption has been added to 2.1.x and 3.0 trunks. See details on this page
Mirrors
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
* id, name: The unique identifier and user-friendly name of this mirror. The id is used to differentiate between mirror elements and to pick the corresponding credentials from the
* url: The base URL of this mirror. The build system will use this URL to connect to a repository rather than the original repository URL.
* mirrorOf: The id of the repository that this is a mirror of. For example, to point to a mirror of the Maven central repository (http://repo1.maven.org/maven2/), set this element to central. More advanced mappings like repo1,repo2 or *,!inhouse are also possible. This must not match the mirror id.
For a more in-depth introduction of mirrors, please read the Guide to Mirror Settings.
Proxies
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
* id: The unique identifier for this proxy. This is used to differentiate between proxy elements.
* active: true if this proxy is active. This is useful for declaring a set of proxies, but only one may be active at a time.
* protocol, host, port: The protocol://host:port of the proxy, seperated into discrete elements.
* username, password: These elements appear as a pair denoting the login and password required to authenticate to this proxy server.
* nonProxyHosts: This is a list of hosts which should not be proxied. The delimiter of the list is the expected type of the proxy server; the example above is pipe delimited - comma delimited is also common.
Profiles
The profile element in the settings.xml is a truncated version of the pom.xml profile element. It consists of the activation, repositories, pluginRepositories and properties elements. The profile elements only include these four elements because they concerns themselves with the build system as a whole (which is the role of the settings.xml file), not about individual project object model settings.
If a profile is active from settings, its values will override any equivalently ID'd profiles in a POM or profiles.xml file.
Activation
Activations are the key of a profile. Like the POM's profiles, the power of a profile comes from its ability to modify some values only under certain circumstances; those circumstances are specified via an activation element.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
...
Activation occurs when all specified criteria have been met, though not all are required at once.
* jdk: activation has a built in, Java-centric check in the jdk element. This will activate if the test is run under a jdk version number that matches the prefix given. In the above example, 1.5.0_06 will match. Ranges are also supported as of Maven 2.1. See the maven-enforcer-plugin for more details about supported ranges.
* os: The os element can define some operating system specific properties shown above. See the maven-enforcer-plugin for more details about OS values.
* property: The profile will activate if Maven detects a property (a value which can be dereferenced within the POM by ${name}) of the corresponding name=value pair.
* file: Finally, a given filename may activate the profile by the existence of a file, or if it is missing.
The activation element is not the only way that a profile may be activated. The settings.xml file's activeProfile element may contain the profile's id. They may also be activated explicitly through the command line via a comma separated list after the -P flag (e.g. -P test).
To see which profile will activate in a certain build, use the maven-help-plugin.
mvn help:active-profiles
Properties
Maven properties are value placeholder, like properties in Ant. Their values are accessible anywhere within a POM by using the notation ${X}, where X is the property. They come in five different styles, all accessible from the settings.xml file:
1. env.X: Prefixing a variable with "env." will return the shell's environment variable. For example, ${env.PATH} contains the $path environment variable (%PATH% in Windows).
2. project.x: A dot (.) notated path in the POM will contain the corresponding element's value. For example:
3. settings.x: A dot (.) notated path in the settings.xml will contain the corresponding element's value. For example:
4. Java System Properties: All properties accessible via java.lang.System.getProperties() are available as POM properties, such as ${java.home}.
5. x: Set within a
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
...
...
The property ${user.install} is accessible from a POM if this profile is active.
Repositories
Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
...
...
...
...
* releases, snapshots: These are the policies for each type of artifact, Release or snapshot. With these two sets, a POM has the power to alter the policies for each type independent of the other within a single repository. For example, one may decide to enable only snapshot downloads, possibly for development purposes.
* enabled: true or false for whether this repository is enabled for the respective type (releases or snapshots).
* updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM's timestamp (stored in a repository's maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
* checksumPolicy: When Maven deploys files to the repository, it also deploys corresponding checksum files. Your options are to ignore, fail, or warn on missing or incorrect checksums.
* layout: In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy.
Plugin Repositories
Repositories are home to two major types of artifacts. The first are artifacts that are used as dependencies of other artifacts. These are the majority of plugins that reside within central. The other type of artifact is plugins. Maven plugins are themselves a special type of artifact. Because of this, plugin repositories may be separated from other repositories (although, I have yet to hear a convincing argument for doing so). In any case, the structure of the pluginRepositories element block is similar to the repositories element. The pluginRepository elements each specify a remote location of where Maven can find new plugins.
Active Profiles
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
The final piece of the settings.xml puzzle is the activeProfiles element. This contains a set of activeProfile elements, which each have a value of a profile id. Any profile id defined as an activeProfile will be active, reguardless of any environment settings. If no matching profile is found nothing will happen. For example, if env-test is an activeProfile, a profile in a pom.xml (or profile.xml with a corrosponding id will be active. If no such profile is found then execution will continue as normal.
第3回Seasar勉強会
東北デベロッパーズ・コミュニティ:第3回Seasar勉強会CommentsAdd Star
オープンソース, コンピュータ
こちらに参加しての所感
TDC : 第3回Seasar勉強会 in Sendaiを5/30に開催します!
http://tohoku-dev.jp/modules/news/article.php?storyid=18
参加動機と会場について
正直、SAStrutsの勉強よりも勉強会ってどんなものだろうか?ってのを体感したくて参加してみました。あと、自分は社内で勉強会を開いたり、前でしゃべる機会もある方みたいなのですが、いつも「これでいいのかな?」って思いながらやっている。そんなワケで、どんなしゃべり方、進め方をすればよいか見て参考にするため。
会場は以外と狭くて、1つのテーブルで2人、2つのテーブルをくっつけてお互いのテーブルの人が向かい側に座る構成。単に机を講師に向けて座るよりこうしたほうが、分からないときにお互いに聞きやすくなるんだろう。(聞く人が1人から、3人に増える)ただ、初めて会う方が多いのに向かい合って座るこういった状況はすごく緊張する。あいている場所で一応「ここいいですか?」って言って座る。駄目って言われたらどうしよう・・・とか思いながら。ここで以前仕事で一緒になった方に会う。あとはぜんぜん知らない人ばかり。正直この人には嫌われていたと思っていたけど、それでもちょっとは気が楽になった。普通に対応してくれて感謝。こういった勉強会は参加するメンバーの固定率が高くなるのかな?自分以外はなんか知り合いって感じがした。
事前にインストールするソフトウエアなどもあったので、行ったらネットにつなげない環境になるのかなと思ったけど、LANが完備してあって随時必要なものはネットに取りに行けたし、なによりインストールすべきソフトを運営側がUSBで提供してくれていたので、安心でした。こういった勉強会は勉強したくて来るので自分のPC持って来いって言われても何の違和感も無いし、自分のPC使うほうが楽なんだけど、人によっては家ではスペックの低いマシンでメールするぐらいって人もいるだろうから、貸し出しPCも用意されるともっと敷居が低くなるんではと感じた。(無理なお願いですけどね)
Slim3についての紹介(ひがさん講演)
ひがさんの講演はSlim3の紹介。ブログの方でいろいろ書いていたような気がするけど、正直頭に入っていなかった。講演という形で紹介されると結構わかったような気がしてくるのは不思議。Slim3はGoogle Apps上で実行できるアプリケーションを作るためのフレームワークみたいなものって認識しました。これでよいんだろうか?また、Slim3の開発にはブランクアプリケーションが用意されているので、これを修正、追加する形で作成していく方式。たとえば、Slim3Controlerというクラスがあるので、これを自分で作るアプリケーションにあわせた名前に変えていくとか。
※ Slim3は、Seasar2の後継となるコンテナーとのこと。紹介の中でGoogle Appsと一緒の形で紹介されていたのでGoogle Appsのものを作るためのものかと勘違いしてしまった。ちなみにSimple less moreという言葉から来ているらしく、スリムスリーと呼ぶらしい。
Slim3はMVC
Slim3はMVCで出来ていて、リクエストはControlerが受け取るということで、1リクエストに対し、1Controlerが必要。でもその Controlerを作るために手でシコシコ書いていくのではなくて、Antで自動生成するとのこと。なるほどこうやって作る人の手間と間違いの元を省いてくれるとな。
Google AppsのBigTable
Google AppsはRDBMSではなくBigTableというDBを使うけど、そのときにjdoかjpaのどちらかでアクセスするんだけど、お勧めはjdoだそうな。理由はjpaっていうのはRDBMSを意識して作ってあるのに対し、jdoはデータの格納先を意識しないつくりになっていて、たとえば格納先がXMLだろうがRDBMSだろうが、ファイルだろうが意識しなくてもいいようになっている。さらに言うとGoogle Appsを開発している人たちがjdo好きが多いからだそうな。
Slim3とTDDと自分なりの所感
ブランクアプリケーションにはテストのフォルダもあり、 TDD(テスト駆動開発)についても説明があった。今作ろうとしている小さな部分を頭で整理して小さなテストを書いてからコードを組むんだけど、最終的にはテストは全体のテストを行う集合体になる。作っているうちに前に作ったテストでコケるって言うことは、今作ったものが前作ったメソッドなどの使い方を間違っているかもってことが一目瞭然になる。
管理者的には「製造」と「テスト」が分けられなくて日程組めないんでは?とか疑問に思うかもしれないけど、この方法をとれば、逆に作るものの日程の「見える化」ができるんではないかと思った。たとえば「xx画面」製造3日、テスト4日って組むんではなくて、「xx画面のyy処理」1日、「xx画面のzzボタン」4時間ってな具合に、作るものを細分化していくことが可能。だけど、普通は開発効率は上がっていくって日程を組むんだろうけど、この場合は前に作ったテストでコケるのは単純に今作ったものが悪いからではなくて、調査する時間も必要になるし、その調査する時間は増えていくと思われるので、その辺を考えて日程を組む必要があるのかなぁと感じた。
Slim3への所感
ちょっと紹介された程度なので、いい感じなんだけど実際の開発の際には、Controlerの基底クラスなんか作りたいってなるかもしれない。その場合は Antをちょっといじるだけで済むんだろうか。テンプレートファイルがあってそっちを変更する程度なんだろうか?それとも大規模な変更が必要(Slim3 自体を変更してコンパイルしなおすとか)なんだろうか・・・その辺を調べる必要があるなと思った。(※下記追記参照)最後にGoogle Appsにデプロイする方法もやってくれて、Eclipse上からボタン1個でデプロイできた。あまり迷わなそう。実は仕事上こまごまとした空き時間ができてきて、RubyかPHPかGoogle Appsのどれかの調査をしようと思っていたけど、こうなったら決まりね。Google AppsとBigTableを勉強することに決定。その方法としてSlim3を使ってみる。こうして自分の中のJava比率が高まってJavaしか知らない使えない人になっていくのでした。
2009/06/08追記
http://blog.takeda-soft.jp/blog/show/339を見ていて、ひがさん本人からのコメントを発見!
ひが
2009/06/04
ControllerとTestCaseの継承元を任意のものに
変える機能をslim3-blankにコミットしました。
build.xmlのsuperclassNameとtestCaseSuperclassName
を適当に書き換えてください。
で、該当するbuild.xmlのプロパティ(superclassName、testCaseSuperclassName)の値を書き換えればいいようですね。下記はhttp://slim3.googlecode.com/svn/trunk/slim3-blank/build.xmlから参照。
・・・省略
・・・省略
なるほど~!
SAStruts勉強会
本日のメインイベント。SAStrutsの勉強会。SAStruts、S2JDBC、Doltengを体感するのが目的らしい。SAStrutsはSuper Agile Strutsの略らしい。Strutsなのに設定ファイルを書かないとか、SeasarなんでHot Deployとか。S2JDBCは可読性の高さとIDEの補完機能を有効に活用できるので生産性が高くなりますよということ。
Doltengでは、プロジェクトを作成すると自動的にブランクアプリケーションみたいなディレクトリ構造を作ってくれるので、これに変更を加えていく開発方法。MFCのウィザードとスケルトンを思い出したのは自分だけだろうか。あと、データベースはすでにH2が組み込まれてあるので、楽だよということ。ローカルPCにデータベースが組まれているので、データはもちろん、テーブル自体を変更する必要がある場合などに、ローカルPCで検証してから全員に反映することも可能になるので開発効率がいいよと言うこと。その際のローカル側のテーブル変更とか、それに伴うプロジェクト側のエンティティの変更とかもAntで一発なので楽ということと、マイグレーションする際に保存してあったデータなんかも復元してくれるらしい。
SAStrutsでもStrutsと同じくActionクラスを作るんだけどStrutsが1URLに対し1アクションなのに対し、SAStrutsでは1ユースケースあたり1アクション(xx画面を使うとか)になるとのこと。この辺は1アクションクラスにイベントが集まるようになるので、分かりやすいなと思う。通常設計書としてはxx画面とか1まとまりにすることが多いし、フレームワーク非依存(そんなの実は本当に可能かってのは置いといて)に書く場合なんかはxx画面=xxクラスって書かれることが多いけど、そういった場合の設計書との乖離も少なくなると思われる。Actionクラスもたとえば LoginActionクラスとかを作ると、URL上でも「コンテキストパス/login」となるとか、/で終わると、index()が呼び出されるとか、login/xxxxでxxxxがメソッド名になるとか確認が想像しやすいという感じ。
SAStrutsでは設定ファイルを書かない
そういえば設定ファイルぜんぜん書かないって事に気がついた。struts-config.xmlだのvalidation.xmlだの。全部アノテーションとして表現してる。スゲー。内部ではどんな風に動いているんだろう。アノテーションをガリガリ書かせるってのはなんかJavaじゃないような気がして自分では好きな方ではないけど、POJOで表現する場合にはこういった方法が合っているんだろうなぁ。
Hot Deploy
あと、Hot Deployだけど、普通Webアプリを作っていて、コンテキストをreloadable=trueにしていれば、クラスを変更するとそのアプリケーションだけ再起動して変更が反映されるよね。Hot Deployってどう違うの?って思っていたけど、なるほどこれはすごいね。サーバを再起動しないといけないようなものもそうだけど、アプリケーションの再起動する時間(サーバが変更を感知して再起動するまでの時間)すらないので、すぐに確認ができる。コレか?
参加して
Slim3もSAStrutsもだけど、開発する際のディレクトリは実際に実行されるアプリケーションのディレクトリ構造とは異なっていてちょっと面食らう。なんでこう複雑になるかは理由は分かっているんだけど、自分が講習でやるときはWebアプリ未経験者を対象にすることが多いので開発ディレクトリ構成=アプリケーションディレクトリ構成になるようにしてた。そのほうが単純で想像しやすいから。でもこれに関しては、いろいろなAntやDoltengなどの便利ツールの集合体なので、会社で勉強会をやるときは「こんなもんだ」「とりあえず、今日はココは見ないでね」とか、講習の対象者に見る部分を限定させてやるしかないかなと感じた。(見ないでといっても見えてしまうのが人間だから、そこで迷うかもしれないけど、その辺を考える必要があるなと感じた)
今回はSAStrutsを触ったことが無い人を対象に「使い方」を勉強した。でも「使い方」よりも内部でどんな風に動いているかって方に興味があって、その辺をやってほしいなと思う。オープンソースなので「ソース見ろ」って感じになるけど、その辺を一人で苦労しながら寂しく見るより、みんなで集まって有識者から教えられるベースでコードリーディングすれば、覚えるべき部分が一本の線になるので良いと思う。なにより内部の動きなんかの知識が増ると言うことは、開発の際の色々な調査の元ネタになるので。
懇親会はヘルニアの調子がおかしくなってきたので辞退させていただきました。次は行ってみたいと思います。運営の皆様、お疲れさまでした。開催することにも興味があるので、次は何かしらスタッフとしても協力できたらと思います。
P.S LLで、Tracで萌えな話とか、Seasar勉強会なのにWicketとかClickの話をして怒りを買ってみたいとか思った自分がいた。
オープンソース, コンピュータ
こちらに参加しての所感
TDC : 第3回Seasar勉強会 in Sendaiを5/30に開催します!
http://tohoku-dev.jp/modules/news/article.php?storyid=18
参加動機と会場について
正直、SAStrutsの勉強よりも勉強会ってどんなものだろうか?ってのを体感したくて参加してみました。あと、自分は社内で勉強会を開いたり、前でしゃべる機会もある方みたいなのですが、いつも「これでいいのかな?」って思いながらやっている。そんなワケで、どんなしゃべり方、進め方をすればよいか見て参考にするため。
会場は以外と狭くて、1つのテーブルで2人、2つのテーブルをくっつけてお互いのテーブルの人が向かい側に座る構成。単に机を講師に向けて座るよりこうしたほうが、分からないときにお互いに聞きやすくなるんだろう。(聞く人が1人から、3人に増える)ただ、初めて会う方が多いのに向かい合って座るこういった状況はすごく緊張する。あいている場所で一応「ここいいですか?」って言って座る。駄目って言われたらどうしよう・・・とか思いながら。ここで以前仕事で一緒になった方に会う。あとはぜんぜん知らない人ばかり。正直この人には嫌われていたと思っていたけど、それでもちょっとは気が楽になった。普通に対応してくれて感謝。こういった勉強会は参加するメンバーの固定率が高くなるのかな?自分以外はなんか知り合いって感じがした。
事前にインストールするソフトウエアなどもあったので、行ったらネットにつなげない環境になるのかなと思ったけど、LANが完備してあって随時必要なものはネットに取りに行けたし、なによりインストールすべきソフトを運営側がUSBで提供してくれていたので、安心でした。こういった勉強会は勉強したくて来るので自分のPC持って来いって言われても何の違和感も無いし、自分のPC使うほうが楽なんだけど、人によっては家ではスペックの低いマシンでメールするぐらいって人もいるだろうから、貸し出しPCも用意されるともっと敷居が低くなるんではと感じた。(無理なお願いですけどね)
Slim3についての紹介(ひがさん講演)
ひがさんの講演はSlim3の紹介。ブログの方でいろいろ書いていたような気がするけど、正直頭に入っていなかった。講演という形で紹介されると結構わかったような気がしてくるのは不思議。Slim3はGoogle Apps上で実行できるアプリケーションを作るためのフレームワークみたいなものって認識しました。これでよいんだろうか?また、Slim3の開発にはブランクアプリケーションが用意されているので、これを修正、追加する形で作成していく方式。たとえば、Slim3Controlerというクラスがあるので、これを自分で作るアプリケーションにあわせた名前に変えていくとか。
※ Slim3は、Seasar2の後継となるコンテナーとのこと。紹介の中でGoogle Appsと一緒の形で紹介されていたのでGoogle Appsのものを作るためのものかと勘違いしてしまった。ちなみにSimple less moreという言葉から来ているらしく、スリムスリーと呼ぶらしい。
Slim3はMVC
Slim3はMVCで出来ていて、リクエストはControlerが受け取るということで、1リクエストに対し、1Controlerが必要。でもその Controlerを作るために手でシコシコ書いていくのではなくて、Antで自動生成するとのこと。なるほどこうやって作る人の手間と間違いの元を省いてくれるとな。
Google AppsのBigTable
Google AppsはRDBMSではなくBigTableというDBを使うけど、そのときにjdoかjpaのどちらかでアクセスするんだけど、お勧めはjdoだそうな。理由はjpaっていうのはRDBMSを意識して作ってあるのに対し、jdoはデータの格納先を意識しないつくりになっていて、たとえば格納先がXMLだろうがRDBMSだろうが、ファイルだろうが意識しなくてもいいようになっている。さらに言うとGoogle Appsを開発している人たちがjdo好きが多いからだそうな。
Slim3とTDDと自分なりの所感
ブランクアプリケーションにはテストのフォルダもあり、 TDD(テスト駆動開発)についても説明があった。今作ろうとしている小さな部分を頭で整理して小さなテストを書いてからコードを組むんだけど、最終的にはテストは全体のテストを行う集合体になる。作っているうちに前に作ったテストでコケるって言うことは、今作ったものが前作ったメソッドなどの使い方を間違っているかもってことが一目瞭然になる。
管理者的には「製造」と「テスト」が分けられなくて日程組めないんでは?とか疑問に思うかもしれないけど、この方法をとれば、逆に作るものの日程の「見える化」ができるんではないかと思った。たとえば「xx画面」製造3日、テスト4日って組むんではなくて、「xx画面のyy処理」1日、「xx画面のzzボタン」4時間ってな具合に、作るものを細分化していくことが可能。だけど、普通は開発効率は上がっていくって日程を組むんだろうけど、この場合は前に作ったテストでコケるのは単純に今作ったものが悪いからではなくて、調査する時間も必要になるし、その調査する時間は増えていくと思われるので、その辺を考えて日程を組む必要があるのかなぁと感じた。
Slim3への所感
ちょっと紹介された程度なので、いい感じなんだけど実際の開発の際には、Controlerの基底クラスなんか作りたいってなるかもしれない。その場合は Antをちょっといじるだけで済むんだろうか。テンプレートファイルがあってそっちを変更する程度なんだろうか?それとも大規模な変更が必要(Slim3 自体を変更してコンパイルしなおすとか)なんだろうか・・・その辺を調べる必要があるなと思った。(※下記追記参照)最後にGoogle Appsにデプロイする方法もやってくれて、Eclipse上からボタン1個でデプロイできた。あまり迷わなそう。実は仕事上こまごまとした空き時間ができてきて、RubyかPHPかGoogle Appsのどれかの調査をしようと思っていたけど、こうなったら決まりね。Google AppsとBigTableを勉強することに決定。その方法としてSlim3を使ってみる。こうして自分の中のJava比率が高まってJavaしか知らない使えない人になっていくのでした。
2009/06/08追記
http://blog.takeda-soft.jp/blog/show/339を見ていて、ひがさん本人からのコメントを発見!
ひが
2009/06/04
ControllerとTestCaseの継承元を任意のものに
変える機能をslim3-blankにコミットしました。
build.xmlのsuperclassNameとtestCaseSuperclassName
を適当に書き換えてください。
で、該当するbuild.xmlのプロパティ(superclassName、testCaseSuperclassName)の値を書き換えればいいようですね。下記はhttp://slim3.googlecode.com/svn/trunk/slim3-blank/build.xmlから参照。
・・・省略
・・・省略
なるほど~!
SAStruts勉強会
本日のメインイベント。SAStrutsの勉強会。SAStruts、S2JDBC、Doltengを体感するのが目的らしい。SAStrutsはSuper Agile Strutsの略らしい。Strutsなのに設定ファイルを書かないとか、SeasarなんでHot Deployとか。S2JDBCは可読性の高さとIDEの補完機能を有効に活用できるので生産性が高くなりますよということ。
Doltengでは、プロジェクトを作成すると自動的にブランクアプリケーションみたいなディレクトリ構造を作ってくれるので、これに変更を加えていく開発方法。MFCのウィザードとスケルトンを思い出したのは自分だけだろうか。あと、データベースはすでにH2が組み込まれてあるので、楽だよということ。ローカルPCにデータベースが組まれているので、データはもちろん、テーブル自体を変更する必要がある場合などに、ローカルPCで検証してから全員に反映することも可能になるので開発効率がいいよと言うこと。その際のローカル側のテーブル変更とか、それに伴うプロジェクト側のエンティティの変更とかもAntで一発なので楽ということと、マイグレーションする際に保存してあったデータなんかも復元してくれるらしい。
SAStrutsでもStrutsと同じくActionクラスを作るんだけどStrutsが1URLに対し1アクションなのに対し、SAStrutsでは1ユースケースあたり1アクション(xx画面を使うとか)になるとのこと。この辺は1アクションクラスにイベントが集まるようになるので、分かりやすいなと思う。通常設計書としてはxx画面とか1まとまりにすることが多いし、フレームワーク非依存(そんなの実は本当に可能かってのは置いといて)に書く場合なんかはxx画面=xxクラスって書かれることが多いけど、そういった場合の設計書との乖離も少なくなると思われる。Actionクラスもたとえば LoginActionクラスとかを作ると、URL上でも「コンテキストパス/login」となるとか、/で終わると、index()が呼び出されるとか、login/xxxxでxxxxがメソッド名になるとか確認が想像しやすいという感じ。
SAStrutsでは設定ファイルを書かない
そういえば設定ファイルぜんぜん書かないって事に気がついた。struts-config.xmlだのvalidation.xmlだの。全部アノテーションとして表現してる。スゲー。内部ではどんな風に動いているんだろう。アノテーションをガリガリ書かせるってのはなんかJavaじゃないような気がして自分では好きな方ではないけど、POJOで表現する場合にはこういった方法が合っているんだろうなぁ。
Hot Deploy
あと、Hot Deployだけど、普通Webアプリを作っていて、コンテキストをreloadable=trueにしていれば、クラスを変更するとそのアプリケーションだけ再起動して変更が反映されるよね。Hot Deployってどう違うの?って思っていたけど、なるほどこれはすごいね。サーバを再起動しないといけないようなものもそうだけど、アプリケーションの再起動する時間(サーバが変更を感知して再起動するまでの時間)すらないので、すぐに確認ができる。コレか?
参加して
Slim3もSAStrutsもだけど、開発する際のディレクトリは実際に実行されるアプリケーションのディレクトリ構造とは異なっていてちょっと面食らう。なんでこう複雑になるかは理由は分かっているんだけど、自分が講習でやるときはWebアプリ未経験者を対象にすることが多いので開発ディレクトリ構成=アプリケーションディレクトリ構成になるようにしてた。そのほうが単純で想像しやすいから。でもこれに関しては、いろいろなAntやDoltengなどの便利ツールの集合体なので、会社で勉強会をやるときは「こんなもんだ」「とりあえず、今日はココは見ないでね」とか、講習の対象者に見る部分を限定させてやるしかないかなと感じた。(見ないでといっても見えてしまうのが人間だから、そこで迷うかもしれないけど、その辺を考える必要があるなと感じた)
今回はSAStrutsを触ったことが無い人を対象に「使い方」を勉強した。でも「使い方」よりも内部でどんな風に動いているかって方に興味があって、その辺をやってほしいなと思う。オープンソースなので「ソース見ろ」って感じになるけど、その辺を一人で苦労しながら寂しく見るより、みんなで集まって有識者から教えられるベースでコードリーディングすれば、覚えるべき部分が一本の線になるので良いと思う。なにより内部の動きなんかの知識が増ると言うことは、開発の際の色々な調査の元ネタになるので。
懇親会はヘルニアの調子がおかしくなってきたので辞退させていただきました。次は行ってみたいと思います。運営の皆様、お疲れさまでした。開催することにも興味があるので、次は何かしらスタッフとしても協力できたらと思います。
P.S LLで、Tracで萌えな話とか、Seasar勉強会なのにWicketとかClickの話をして怒りを買ってみたいとか思った自分がいた。
登録:
投稿 (Atom)
マイブログ リスト
Jang ki hote