スタンドアロンで実行すると正常に動作する Maven プラグインを作成しました。プラグイン ソース コード内にカスタム XML リソース ファイルがいくつかあります。これらは、テスト時に表示され、プラグインからアクセスできます (以下のプラグイン POM)。だから私はプラグインをインストールし、すべてがうまくいっています。
次に、新しくインストールしたプラグインを参照する新しいプロジェクトを作成します (以下のプロジェクト POM)。プラグイン プロジェクト内に埋め込まれたものと同様のカスタム XML リソース ファイルがいくつかあります。
プロジェクトの構造は次のとおりです。
tester
| pom.xml
|
+---src
| +---main
| | +---java
| | | \---[BLAH}
| | |
| | \---resources
| | tester-catalog-env.xml
| |
| \---test
| \---java
| \---[BLAH]
プラグイン内には、次のメソッドがあります。
public TesterProcessCatalog getTesterProcessCatalog(Properties properties) throws TesterDataSourceException {
try {
InputStream in = getClass().getClass().getResourceAsStream("tester-catalog-env.xml");
Reader reader = ReaderFactory.newXmlReader(in);
return readCatalog(reader);
} catch (IOException e) {
throw new TesterDataSourceException("Error reading catalog", e);
}
}
この線:
InputStream in = getClass().getClass().getResourceAsStream("tester-catalog-env.xml");
mvn tester:test
リソースがクラスパスに存在することがわかりますが、(プラグインmojoで定義されているように)プロジェクトから実行するとnullが返されます。私は次のことを試しました
InputStream in = getClass().getClass().getResourceAsStream("/tester-catalog-env.xml");
また、 を返しますnull
。
リソース ファイルをプラグイン リソース ディレクトリにコピーして実行すると、問題なく動作します。
最終的に私が達成しようとしているのは、プロジェクトのリソース ディレクトリ (つまり、tester-catalog-xxx.xml - xxx はユーザーが作成した新しいファイル) に複数の構成ファイルを作成することmvn tester:test -DprocessCatalog=env2
です。 tester-catalog-env2.xml という名前のファイルが読み込まれます。
私が間違っていることについてのアイデアはありますか?
Maven情報
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven ホーム: C:\Apps\apache-maven-3.0.4
Java バージョン: 1.6.0_35、ベンダー: Sun Microsystems Inc.
Javaホーム: C:\java\jdk1.6.0_35\jre
デフォルトのロケール: en_GB、プラットフォームのエンコード: Cp1252
OS 名: "windows xp"、バージョン: "5.1"、アーキテクチャ: "x86"、ファミリ: "windows"
プラグイン POM
<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>com.testing.tester.maven</groupId>
<artifactId>tester</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0-SNAPSHOT</version>
<name>tester Maven Mojo</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-annotations</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\java\jdk1.6.0_35\lib\tools.jar</systemPath>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.brsanthu</groupId>
<artifactId>data-exporter</artifactId>
<version>1.0.0</version>
<!-- http://code.google.com/p/data-exporter/wiki/UserGuide -->
<!-- mvn install:install-file -DgroupId=com.brsanthu -DartifactId=data-exporter -Dversion=1.0.0 -Dpackaging=jar -Dfile=http://data-exporter.googlecode.com/files/data-exporter-1.0.0.jar-->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.5.5</version>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
プロジェクトPOM
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.testing.tester</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>tester</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.testing.tester.maven</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.testing.tester.maven</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
</project>