倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

イカす達人 (6) : Groovy コード内で使用できる定義済み変数

前々回前回Maven2 で Groovy コードを実行する方法を見ましたが、このコード中で、自分で定義する必要なく使用できる「定義済み変数」がいくつかあります。 今回はそれらと、それらのプロパティを見ていく、というか参考のために列挙しておきます(一覧)。

ちなみに、使い方はこんな感じ:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sample</groupId>
  <artifactId>sample</artifactId>
  <version>1.0-SNAPSHOT</version>
    
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>1.2</version>
        <configuration>
          <source><![CDATA[
log.info(project.groupId)
log.info(project.artifactId)
log.info(project.version)
          ]]></source>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

実行コマンド

mvn groovy:execute

実行結果


[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - org.sample:sample:jar:1.0-SNAPSHOT
[INFO] task-segment: [groovy:execute]
[INFO] ------------------------------------------------------------------------
[INFO] [groovy:execute {execution: default-cli}]
[INFO] org.sample
[INFO] sample
[INFO] 1.0-SNAPSHOT

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6 seconds
[INFO] Finished at: Tue Apr 13 12:47:56 JST 2010
[INFO] Final Memory: 12M/29M
[INFO] ------------------------------------------------------------------------

定義済み変数


定義済み変数(と定義済みメソッド)には、以下のものがあります。

変数名 説明
project, pom ビルドを実行している Maven2 プロジェクト org.codehaus.gmaven.plugin.execute.
GroovyMavenProjectAdapter
session 実行しているビルド・セッション org.apache.maven.execution.MavenSession
settings 実行しているビルドの設定 org.apache.maven.settings.Settings
log SLF4J ログ・インスタンス org.sonatype.gossip.Gossip$LoggerImpl
ant Ant ビルダー groovy.util.AntBuilder
fail() MojoExecutionException を投げる
  • fail() の使用法、振る舞いは説明の必要はないかと。
  • log はイマイチ見たことのない型な気がしますが、使い方は org.apache.maven.plugin.logging.Log と同じような感じです(「log.info('Hello world !')」とか)。 詳しくはこちら

以降の表に出てくる「型」は次の API ドキュメントを参考にして下さい。 ただし、バージョンは少々ずれているかも知れません。

★project, pom★

プロパティ
activeProfiles List
artifact
artifactId
artifactMap
artifacts
org.apache.maven.artifact.Artifact
String
Map
Set
attachedArtifacts List
basedir File
build
buildExtensions
buildPlugins
org.apache.maven.model.Build
List
List
ciManagement org.apache.maven.model.CiManagement
class Class
collectedProjects List
compileArtifacts
compileClasspathElements
compileDependencies
compileSourceRoots
List
List
List
List
contributors List
defaultGoal String
delegate org.apache.maven.project.MavenProject
dependencies
dependencyArtifacts
dependencyManagement
List
Set
org.apache.maven.model.DependencyManagement
description String
developers List
distributionManagement
distributionManagementArtifactRepository
org.apache.maven.model.DistributionManagement
org.apache.maven.artifact.repository.ArtifactRepository
dynamicBuild
dynamicCompileSourceRoots
dynamicScriptSourceRoots
dynamicTestCompileSourceRoots
org.apache.maven.model.Build
List
List
List
executionProject
extensionArtifactMap
extensionArtifacts
org.apache.maven.project.MavenProject
Map
Set
file File
filters List
goalConfiguration org.codehaus.plexus.util.xml.Xpp3Dom
groupId String
id String
inceptionYear String
issueManagement org.apache.maven.model.IssueManagement
licenses List
mailingLists List
managedVersionMap Map
model
modelVersion
org.apache.maven.model.Model
String
modulePathAdjustment
modules
String
List
name String
organization org.apache.maven.model.Organization
originalInterpolatedBuild
originalInterpolatedCompileSourceRoots
originalInterpolatedScriptSourceRoots
originalInterpolatedTestCompileSourceRoots
originalModel
org.apache.maven.model.Build
List
List
List
org.apache.maven.model.Model
packaging String
parent
parentArtifact
org.apache.maven.project.MavenProject
org.apache.maven.artifact.Artifact
pluginArtifactMap
pluginArtifactRepositories
pluginArtifacts
pluginManagement
pluginRepositories
Map
List
Set
org.apache.maven.model.PluginManagement
List
prerequisites org.apache.maven.model.Prerequisites
preservedBasedir
preservedProperties
File
Properties
projectBuilderConfiguration
projectReferenceId
projectReferences
org.apache.maven.project.ProjectBuilderConfiguration
String
Map
properties Properties
remoteArtifactRepositories List
reportArtifactMap
reportArtifacts
reportConfiguration
reportPlugins
reporting
Map
Set
org.codehaus.plexus.util.xml.Xpp3Dom
List
org.apache.maven.model.Reporting
repositories List
resources List
runtimeArtifacts
runtimeClasspathElements
runtimeDependencies
List
List
List
scm org.apache.maven.model.Scm
scriptSourceRoots List
systemArtifacts
systemClasspathElements
systemDependencies
List
List
List
testArtifacts
testClasspathElements
testCompileSourceRoots
testDependencies
testResources
List
List
List
List
List
url String
version String

project.build

project.build で取得できるオブジェクトは org.apache.maven.model.Buildインスタンスです。 ここに定義されているプロパティは以下の通り。

プロパティ
class Class
defaultGoal String
directory String
extensions List
filters List
finalName String
outputDirectory String
pluginManagement
plugins
pluginsAsMap
org.apache.maven.model.PluginManagement
List
Map
resources List
scriptSourceDirectory String
sourceDirectory String
testOutputDirectory
testResources
testSourceDirectory
String
List
String

project.artifact

project.artifact で返されるオブジェクトは org.apache.maven.artifact.Artifact (正確には org.apache.maven.artifact.DefaultArtifact)のインスタンスです。 ここに定義されているプロパティは以下の通り。

プロパティ
artifactHandler
artifactId
org.apache.maven.artifact.handler.ArtifactHandler
String
availableVersions List
baseVersion String
class Class
classifier String
dependencyConflictId
dependencyFilter
dependencyTrail
String
org.apache.maven.artifact.resolver.filter.ArtifactFilter
List
downloadUrl String
file File
groupId String
id String
metadatab
metadataList
org.apache.maven.artifact.metadata.ArtifactMetadata
Collection
repository org.apache.maven.artifact.repository.ArtifactRepository
scope String
selectedVersion org.apache.maven.artifact.versioning.ArtifactVersion
type String
version
versionRange
String
org.apache.maven.artifact.versioning.VersionRange

★session★

プロパティ
class Class
container org.codehaus.plexus.PlexusContainer
currentProject org.apache.maven.project.MavenProject
eventDispatcher org.apache.maven.monitor.event.EventDispatcher
executionProperties
executionRootDirectory
Properties
String
goals List
localRepository org.apache.maven.artifact.repository.ArtifactRepository
pluginContext Map
projectBuilderConfiguration org.apache.maven.project.ProjectBuilderConfiguration
settings org.apache.maven.settings.Settings
sortedProjects List
startTime Date
userProperties Properties

★settings★


settings はプロクシなどの設定を行う「settings.xml」をオブジェクトにしたものです。 ファイルは以下の位置に配置するようです:

  • Maven install: $M2_HOME/conf/settings.xml
  • user's install: ${user.home}/.m2/settings.xml

詳しくはこちら

プロパティ
activeProfiles
activeProxy
List
org.apache.maven.settings.Proxy
class Class
interactiveMode Boolean
localRepository String
mirrorOf
mirrors
org.apache.maven.settings.Mirror
List
modelEncoding String
pluginGroups List
profiles
profilesAsMap
List
Map
proxies List
runtimeInfo org.apache.maven.settings.RuntimeInfo
server
servers
org.apache.maven.settings.Server
List
sourceLevel String

★ant★


使い方は次回以降にでも。

プロパティ
antProject org.apache.tools.ant.Project
antXmlContext org.apache.tools.ant.helper.AntXMLContext
class Class
metaClass groovy.lang.MetaClass
project org.apache.tools.ant.Project
property Object

Apache Maven 2.0入門 Java・オープンソース・ビルドツール

Apache Maven 2.0入門 Java・オープンソース・ビルドツール


Groovyイン・アクション

Groovyイン・アクション