Nov 28, 2005
maven-metadata.xml の読み込み方
先日作成した MavenRepositoryBrowser で使用した maven-metadata.xml の読み込み方法をメモ。
maven-metadata.xml 読み込みの実行環境構築
- maven-repository-metadata-2.0.jar をクラスパスに追加。
- plexus-utils-1.0.4.jar をクラスパスに追加。
サンプルコード
org.apache.maven.artifact.repository.metadata.Metadata というクラスが Metadata を表す。 ストリーム等から maven-metadata.xml を読み込み Metadata を生成するのが org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader。 この 2 つのクラスを利用すると苦も無く maven-metadata.xml を読み込むことができる。便利。
public Metadata readMetadata(final String groupId,
final String artifactId, final String version) throws Exception {
String mavenMetadataRelativePath = "/" + groupId.replaceAll("\\.", "/")
+ "/" + artifactId + "/" + version + "/" + "maven-metadata.xml";
String repositoryRootPath = this.repositoryRoot.toExternalForm();
if (!repositoryRootPath.endsWith("/")) {
repositoryRootPath = repositoryRootPath + "/";
}
URL mavenMetadataURL = new URL(repositoryRootPath
+ mavenMetadataRelativePath);
Metadata metadata = this.readMetadata(mavenMetadataURL);
return metadata;
}
protected Metadata readMetadata(final URL url) throws Exception {
Metadata metadata = null;
InputStream is = null;
Reader source = null;
try {
URLConnection connection = url.openConnection();
is = connection.getInputStream();
source = new InputStreamReader(is);
MetadataXpp3Reader reader = new MetadataXpp3Reader();
metadata = reader.read(source);
} finally {
try {
if (is != null) {
is.close();
}
} finally {
if (source != null) {
source.close();
}
}
}
return mavenMetadata;
}
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Maven/20051128_01.trackback
writeback message: Ready to post a comment.
