2010-09-19 85 views
12

我有一个插件可以转换已编译的类。这个转换需要为模块的类和模块的测试类完成。因此,我将插件绑定到进程类和进程测试类阶段。我遇到的问题是我需要确定插件当前正在执行哪个阶段,因为我没有(实际上不能)两次转换同一组类。确定插件内的Maven执行阶段

因此,在插件中,我需要知道,如果我在执行过程中,课 - 在这种情况下,我变换模块的课程。或者如果我正在执行流程测试类 - 在这种情况下,我不会转换模块的类并仅转换模块的测试类。

我当然可以,创建两个插件这一点,但这种解决方案深深冒犯了我的感情,并可能是违法的几个州。

好像什么我可以达到从我的模块应该能够告诉我,目前的阶段是什么。我不能为了我的生活找出那是什么。

谢谢...

+0

什么是'[僵尸]'标签? – 2010-09-19 21:53:31

+0

@帕斯卡为僵尸进程和僵尸计算机提供的答案:) – 2010-09-19 21:56:06

+0

@科林是的,我明白了,但是我没有看到与问题有任何关系。 – 2010-09-20 00:26:21

回答

7

因此,在插件中,我需要知道,如果我在执行过程中的类(...),或者如果我在执行过程中,测试类

AFAIK,这是not really possible

我当然可以为此创建两个插件,但这种解决方案深深地触犯了我的敏感性,可能违反了几个州的法律。

我没有看到有两个Mojos共享代码,但绑定到不同阶段的任何错误。像Maven编译器插件(及其compiler:compilecompiler:testCompile目标)。

+0

嗯,这个问题的答案由J博士是很明确的去了。我必须说,这似乎很奇怪,但什么evs ...感谢您的快速答案。 – Hellblazer 2010-09-20 00:28:58

+0

我还发现AspectJ编译器的Maven插件与我需要做的事情相同,所以我会看看他们是如何处理这个的。 – Hellblazer 2010-09-20 01:06:14

+0

因此,AspectJ编译器使用的模式对我有效。对于后代,我只需在我的插件中创建两个Mojos,一个用于进程类,另一个用于进程测试类。这个解决方案不需要另一个插件(这是我的主要担心)。 – Hellblazer 2010-09-20 02:53:47

2

你不能得到的阶段,但你可以得到,你必须作为独立的执行ID。在插件中:

/** 
* @parameter expression="${mojoExecution}" 
*/ 
private org.apache.maven.plugin.MojoExecution execution; 

... 

public void execute() throws MojoExecutionException 
{ 
    ... 
    System.out.println("executionId is: " + execution.getExecutionId()); 
} 

我不确定这是否可移植到Maven 3呢。

+0

谢谢。我只使用了AspectJ使用的模式,它工作得很好。当Maven想要使用特定模式时,不想违背谷物。 – Hellblazer 2010-09-21 21:14:34

+0

是的,这绝对是一个更好的方式来处理它 – 2010-09-23 05:35:21

0

的Java插件的代码片段:

import org.apache.maven.plugin.MojoExecution; 
import org.apache.maven.plugins.annotations.Component; 

... 

@Component 
private MojoExecution execution; 
... 
execution.getLifecyclePhase() 

使用Maven的依赖关系(你的版本可能会有所不同):

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-plugin-api</artifactId> 
    <version>3.3.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.maven.plugin-tools</groupId> 
    <artifactId>maven-plugin-annotations</artifactId> 
    <version>3.4</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-core</artifactId> 
    <version>3.3.1</version> 
</dependency> 
相关问题