【发布时间】:2014-05-13 13:26:04
【问题描述】:
我在为我的公司开发插件(后来称为“myPlugin”)时遇到了一些麻烦。
背景: 我正在阅读 Manning 公司的《SonarQube in Action》一书。 有一个开发自己的插件的小指南(他们使用 redmine 插件作为开发示例)。它告诉我使用 sonar-plugin-archetype 创建基本框架。
重构前的情况: 我写了插件,它工作正常。我在进行一些重构时遇到了这个问题。在重构我的树中 src 文件夹中的每个包之前(使用 ecplise)被称为“main.java.org.sonar.plugins.myplugin”,但每个类中的包删除是“org.sonar.plugins.myplugin”。这是使用 sonar-plugin-archetype 创建的默认设置。
sonar-packaging-maven-plugin 的 pom.xml 中的设置如下一次。
Pom-snippet before any changes were done:
<plugin>
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-packaging-maven-plugin</artifactId>
<version>1.9</version>
<extensions>true</extensions>
<configuration>
<pluginClass>org.sonar.plugins.myplugin.myPlugin</pluginClass>
</configuration>
</plugin>
到目前为止一切正常。现在我们来解决我的问题。
重构后的情况: 由于我的公司对类和包有一些命名约定,我将树中的包名更改为“com.mycompany.sonar.plugins.myplugin”,每个类中的包删除也更改为“com.mycompany.sonar.plugins.myplugin” ”。然后我将 sonar-packaging-maven-plugin 的 classPath 选项更改为“com.mycompany.sonar.plugins.myplugin.myPlugin”。我所做的只是改变“组织”。进入“com.mycompany”。
Pom-snippet after changes were done:
<plugin>
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-packaging-maven-plugin</artifactId>
<version>1.9</version>
<extensions>true</extensions>
<configuration>
<pluginClass>com.mycompany.sonar.plugins.myplugin.myPlugin</pluginClass>
</configuration>
</plugin>
当我运行“编译”命令时,一切正常。使用“包”不起作用,因为 sonar-packaging-maven-plugin 无法找到给定的类(请参阅下面的控制台输出)。当我再次将所有内容重新重构到开始时,它又可以工作了。
[...]
[INFO] --- sonar-packaging-maven-plugin:1.9:sonar-plugin (default-sonar-plugin) @ sonar-projectkeychecker-plugin ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 19.649 s
[INFO] Finished at: 2014-04-02T11:42:01+01:00
[INFO] Final Memory: 13M/67M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.sonar:sonar-packaging-maven-plugin:1.9:sonar-plugin (default-sonar-plugin) on project sonar-myplugin-plugin: Plugin class not found: 'com.mycompany.sonar.plugins.myplugin.myPlugin-> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
我的问题:为什么我的新名称不起作用? sonar-packaging-maven-plugin 是否有任何内部约定(比如包装名称必须以“org.sonar”开头或类似的东西)?
感谢您阅读这篇长文并尝试帮助我:)
【问题讨论】:
-
可以提供新的POM sn-p吗?
-
您到底想看什么?我将它添加到我的问题中(我已经确定没有打字错误)
标签: eclipse maven plugins sonarqube