• 主页
  • Java SE
  • J2ME
  • Web开发
  • Java EE
  • Eclipse

在JAVA代码里如何获取MavenProject对象

zbd85812 2014-01-23 01:00:29
org.apache.maven.project.MavenProject对象是maven插件里在MAVEN运行时自动会获取到的,但是我现在写了个自动化部署环境的代码通过继承AbstractMojo的一个testMojo类进行MavenProject对象的操作时里面是NULL,有没有什么办法能获取到这个MavenProject对象呢?
我想手动调用execute()方法来获取几个我需要的信息,我的代码是:
@SuppressWarnings("unchecked")
public class GenerateTriggerMojo extends AbstractMojo {

/**
* @parameter
*/
private List<String> searchPackageNames;

/**
* @parameter expression="${project}"
*/
private MavenProject mavenProject;

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
searchPackageNames=null;
//Model model=new Model();
//model.setArtifactId("test.mojo");
//mavenProject=new MavenProject(model);
//mavenProject.setArtifactId("test.mojo");
//File file =new File("Volumes/MacHD/Users/john/Documents/workspace/MojoTest");
//mavenProject.setFile(file);
//mavenProject.setGroupId("com.java");
//init();
String currentModule = mavenProject.getArtifactId();
List<String> classpathElementList = (List<String>) mavenProject.getCompileClasspathElements();
String basedir=mavenProject.getBasedir().toString();
}

}
...全文
220 点赞 收藏 4
写回复
4 条回复
漫天飘雪的夜 2015年03月24日
引用 3 楼 zbd85812 的回复:
你好,谢谢你的回答啊!用MVN命令运行没有问题,但是我是想直接在JAVA比如MAIN函数调用的时候去初始化和使用MavenProject这个对象,这样就不知道该怎么办?
解决了么,我现在也需要这样做,不知道怎么进行了....
回复 点赞
zbd85812 2014年02月21日
你好,谢谢你的回答啊!用MVN命令运行没有问题,但是我是想直接在JAVA比如MAIN函数调用的时候去初始化和使用MavenProject这个对象,这样就不知道该怎么办?
回复 点赞
Lsheep 2014年01月24日
专门去写了一个测试项目,源码和测试输出如下:

//MyMojo
public class MyMojo
    extends AbstractMojo
{
    /**
     * Location of the file.
     * @parameter expression="${project}"
     * @readonly
     */
    MavenProject project;

    public void execute()
        throws MojoExecutionException
    {
        getLog().info("The name is : " + project.getName());
    }
}
//pom.xml
  ...
  <modelVersion>4.0.0</modelVersion>
  <groupId>MojoTest</groupId>
  <artifactId>MojoTest</artifactId>
  <packaging>maven-plugin</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MojoTest 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>org.apache.maven</groupId>
          <artifactId>maven-project</artifactId>
          <version>2.2.0</version>
      </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

//执行:mvn MojoTest:MojoTest:1.0-SNAPSHOT:name
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building MojoTest Maven Mojo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- MojoTest:1.0-SNAPSHOT:name (default-cli) @ MojoTest ---
[INFO] The name is : MojoTest Maven Mojo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
我的没问题呀,你看看是不是其他地方写错了。
回复 点赞
zbd85812 2014年01月24日
也就是说有什么方法能脱离mvn命令,直接通过JAVA代码调用来初始化这个对象或者通过什么方式能初始化这个对象呢?
回复 点赞
发动态
发帖子
Java
创建于2007-09-28

1.8w+

社区成员

8.1w+

社区内容

Java相关技术讨论
社区公告
暂无公告