Maven插件配置将参数设置为类

时间:2014-08-29 10:43:11

标签: java maven

我正在开发一个maven插件,其目标是具有类的参数。

我想将此目标配置为使用特殊类。

这是我的maven插件的Mojo:

/**
 * The used parser.
 * 
 * @parameter expression="${parser}"
 */
private EndpointParser parser;

public void execute() throws MojoExecutionException {

这是我使用插件的项目的pom.xml:

...
<plugins>
        <plugin>
            <groupId>foo</groupId>
            <artifactId>bar</artifactId>
            <configuration>
                <parser>com.foo.bar.MyEndpointParser</parser>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <phase>generate-sources</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
...

我如何让它发挥作用。

2 个答案:

答案 0 :(得分:2)

如果MyEndPointParser不是你的插件的一部分,而是另一个项目(它本身不是你的插件的依赖项)你必须声明它不是你的项目的依赖,而是你的插件,例如。

<plugins>
    <plugin>
        <groupId>foo</groupId>
        <artifactId>bar</artifactId>
        <configuration>
            <parser>com.foo.bar.MyEndpointParser</parser>
        </configuration>

        <dependencies>
            <dependency>
                <groupId>foo</groupId>
                <artifactId>contains-my-endpoint-parser</artifactId>
            </dependency>
        </dependencies>

        <executions>
            <execution>
                <goals>
                    <goal>generate</goal>
                </goals>
                <phase>generate-sources</phase>
            </execution>
        </executions>
    </plugin>
</plugins>

答案 1 :(得分:0)

我认为这应该有效:

<configuration>
  <parser implementation="com.foo.bar.MyEndpointParser"/>
</configuration>

但是,如果将MyEndpointParser配置为Component,则可能更容易。我找不到任何up2date文档。你可以看一下maven-compiler-plugin的来源。你有compilerId的参数可以在实现之间切换。