- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尝试编写自己的 Maven 插件,并尝试使用通常的注释访问 MavenProject。但是,当我执行插件时,项目字段不会被注入(inject)并保持为空。这是我的示例代码:
package xyz;
import org.apache.maven.plugin.*;
import org.apache.maven.plugins.annotations.*;
import org.apache.maven.project.*;
/**
* @goal develop
*
*/
public class Experiment extends AbstractMojo {
@Parameter( defaultValue = "${project}", readonly = true, required = true )
protected MavenProject project;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
if (project == null) {
getLog().error("Variable ${project} is null!");
} else {
getLog().info("Variable ${project} is filled!");
}
}
}
无论我尝试什么,我都无法让 Maven 自动将正确的对象注入(inject)项目字段,我总是得到该字段为空的信息。知道我做错了什么吗?
pom 文件似乎不是这里有趣的部分,因为我在构建中使用了很长时间的大 poms 得到了这种行为。但即使是最简单的 pom 文件,我也可以重现它:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
</project>
最佳答案
以防万一有人提出这个问题:我遇到了同样的问题,MavenProject 没有像这样注入(inject)带注释的属性:
@Parameter(defaultValue = "${project}", required = true, readonly = true)
private MavenProject project;
我已经 - 在明显的预注释 mojo 示例的指导下 - 使用 Javadoc 标记 @goal 定义了目标名称,如下所示:
/**
* execute my goal
* @goal mygoal
*/
public class MyGoal extends AbstractMojo {
// goal's code goes here
}
在将其更改为使用 mojo 类的注释后一切正常,如下所示:
@Mojo(name = "mygoal")
public class MyGoal extends AbstractMojo {
// goal's code goes here
}
在我看来,如果 mojo 被指定为注释,maven 似乎只查看注释。将注解(用于字段)与 Javadoc 标记混合使用似乎无法正常工作(尽管我没有对此进行任何进一步调查)。
关于java - MavenProject 注入(inject)似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111852/
我的问题很不明确,因为我不知道从哪里开始解决问题。我希望您指出具体的“关键字”或代码点,我可以使用它们来分析问题。 我能够部署 eclipse bundle 和 eclipse feature 并将其
我正在编写一个 Maven 插件,我想自动解析特定的依赖项,并根据为插件提供的参数将它们作为依赖项添加到项目中。 我已经能够通过 aether 成功解决依赖关系,但以太和 MavenProject 之
我尝试编写自己的 Maven 插件,并尝试使用通常的注释访问 MavenProject。但是,当我执行插件时,项目字段不会被注入(inject)并保持为空。这是我的示例代码: package xyz;
MavenProject.getBaseDir()返回 pom.xml 文件的目录。如何使用 MavenProject 获取 ${project.build.directory} ?我相信用户可以重新
如何使用 Aether 获取 MavenProject 的所有依赖项(包括传递性依赖项)? 我见过许多示例,其中您指定了 gav,它会解析 Artifact 及其所有依赖项。这一切都很好。但是,如果您
我正在尝试提取有关我项目中使用的所有依赖项(递归)的信息。 MavenProject 类似乎提供了我需要的所有信息。但我不知道如何将 Artifact 的实例转换为 MavenProject 的实例
请注意,我知道 Maven2 已停产,但我对生产方面的选择一无所知,所以请不要再告诉我切换到 Maven3,因为这没有回答这个问题以任何方式。 现在我们在公司使用 Maven2,但由于某些原因,我们的
是否可以从 pom.xml 文件中获取 org.apache.maven.project.MavenProject 或 POM 的其他对象形式的实例? 提前致谢。 最佳答案 是的,你可以。这是代码。你
我正在尝试运行通过执行“File::new project”并选择“maven”然后选择“JavaFX Application”创建的“mavenproject1”文件。 我使用的是最新最好的。我有单
我正在尝试使用 org.apache.maven.project.MavenProject 获取一些 maven Artifact 的依赖项列表. 我的代码是这样的。 public List load
我提到了一些相关的职位,但并没有解决我的问题。因为我正在使用maven-jar-plugin-2.4 jar。 我正在使用JBoss Developer Studio 7.1.1 GA IDE,并且正
我是一名优秀的程序员,十分优秀!