7

カスタムMavenプラグインを開発しています。私が書くとき:

${project.version}

私のpomファイルにその値を取得できますが、プロパティファイルに書き込む場合は方法があります。

project.version = ${project.version}

これにより、project.version値が正しく設定されますが、Javaコードでどのように実装できますか?

PS: Mojoでアノテーションを使用せず、Javaコードで変数を使用したくないのは、ユーザーがプロパティファイルのように変数として定義する必要があり、変更するためにコアJavaコードを変更できないためです。 。

4

3 に答える 3

7

内部に追加し、必要なものすべてに対してフィルタリングをオンにするだけで、 Mavenリソースフィルタリングを使用できます。<resources><build>

于 2013-02-08T00:11:08.483 に答える
0

アノテーションを使用する場合は、mojo内でhttp://maven.apache.org/plugin-tools/maven-plugin-plugin/examples/using-annotations.htmlを参照してください。

@Component
protected MavenProject project;

ドックレット付き

/**
 * The Maven project to act upon.
 * 
 * @parameter expression="${project}"
 * @required
 */
private MavenProject project;

次にproject.getVersion()

于 2013-02-08T00:01:39.487 に答える
0

pom.xmlこの関数で行うように、プロパティを読み取って保存することができます。

/**
 * Save a property in a pom.xml
 *
 * @param propertyName Name of the property
 * @param value New value for the property
 */
public static void saveProjectProperty(String propertyName, String value)
{
    Model model = null;
    FileReader reader = null;
    MavenXpp3Reader mavenreader = new MavenXpp3Reader();
    try
    {
        reader = new FileReader("pom.xml");
        model = mavenreader.read(reader);
        MavenProject project = new MavenProject(model);
        while (project.getParent() != null)
        {
            project = project.getParent();
        }
        project.getProperties().put(propertyName, value);
        try (FileWriter fileWriter = new FileWriter("pom.xml"))
        {
            project.writeModel(fileWriter);
        }
    }
    catch (IOException ex)
    {
        LOG.severe("Error saving pom.xml");
    }
    catch (XmlPullParserException ex)
    {
        LOG.warning("Error reading pom.xml");
    }
}

JVMでネイティブではないクラスを使用できるようにするには、次の依存関係を追加する必要があります。

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-model</artifactId>
  <version>2.0</version>
</dependency>

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-project</artifactId>
  <version>2.0</version>
</dependency
于 2015-04-20T23:42:47.617 に答える