我正在开发一个用于构建自定义包类型的Maven插件。 我已经把它打包并创造了一个罚款。但是,我之前的目标是创建一个库文件夹。
我希望我的构建(包)目标确保先前已经运行了先前的Lib目标。我怎么能这样做?
声明构建类如下:
@Mojo(name = "build", defaultPhase = LifecyclePhase.PACKAGE,
requiresProject = true)
@Execute(goal="lib", phase = LifecyclePhase.PREPARE_PACKAGE)
public class BuildComponent extends AbstractComponentMojo
和lib类一样:
@Mojo(name = "lib", defaultPhase = LifecyclePhase.PREPARE_PACKAGE,
requiresProject = true)
@Execute(goal="compile", phase = LifecyclePhase.COMPILE)
public class LibComponent extends AbstractLibMojo
这样可以实现两个目标。我想打个电话
<{1}}代替mvn groupId:build
成功构建。
我在运行时错过了一些注释处理吗?从我读过的内容来看,我认为我需要一个自定义生命周期来完成这项工作。我找到了Maven Lifecycle Extensions example,但我不确定如何使用它将目标或阶段注入生命周期的maven构建并开始使用。
答案 0 :(得分:0)
我能够让它运转起来。但是我觉得我正在使用maven-2方法而不是maven-3方法。我很想看到 Maven 3.0 回答
基本上我删除了@Execute
注释,因为无论如何都不需要它们。
然后我添加了文件src/main/resources/META-INF/plexus/components.xml
<?xml version="1.0" encoding="UTF-8"?>
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>wcc</role-hint>
<implementation>
org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
</implementation>
<configuration>
<phases>
<process-resources>
org.apache.maven.plugins:maven-resources-plugin:resources
</process-resources>
<compile>
org.apache.maven.plugins:maven-compiler-plugin:compile
</compile>
<process-classes>
org.ucmtwine:ucm-maven-plugin:classpath
</process-classes>
<process-test-resources>
org.apache.maven.plugins:maven-resources-plugin:testResources
</process-test-resources>
<test-compile>
org.apache.maven.plugins:maven-compiler-plugin:testCompile
</test-compile>
<test>
org.apache.maven.plugins:maven-surefire-plugin:test
</test>
<prepare-package>
org.ucmtwine:ucm-maven-plugin:lib
</prepare-package>
<package>
org.ucmtwine:ucm-maven-plugin:build
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:install
</install>
<deploy>
org.ucmtwine:ucm-maven-plugin:deploy
</deploy>
</phases>
</configuration>
</component>
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>wcc</role-hint>
<implementation>
org.apache.maven.artifact.handler.DefaultArtifactHandler
</implementation>
<configuration>
<!--the extension used by Maven in the repository-->
<extension>zip</extension>
<!--the type used when specifying dependencies etc.-->
<type>wcc</type>
<!--the packaging used when declaring an implementation of
the packaging-->
<packaging>wcc</packaging>
</configuration>
</component>
</components>
</component-set>
然后在我正在使用插件的应用程序中
我设置<packaging>wcc</packaging>
和<extensions>true</extensions>
我声明我的自定义插件。