我正在尝试使用这个插件,但是在试图了解如何让maven使用它时却不知所措。我想从Artifactory解决它,而不是通过项目pom中的pluginRepository。
https://github.com/NicholasAStuart/Maven-Mule-REST-Plugin
如果我只是在mvn包之后运行它,它会失败:
mvn mule-mmc-rest-plugin:deploy -Dname=muleAppName \
-DmulepApiUrl=http://my.mmc.server:8080/mmc-console-3.4.0/api/repository \
-Dversion=3.3.3 -Dusername=admin -Dpassword=pw
[ERROR] No plugin found for prefix 'mule-mmc-rest-plugin' in the current
project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo]
available from the repositories [local (/root/.m2/repository),
repo(http://my.artifactory:8081/artifactory/repo)] -> [Help 1]
在我的pom中我添加了
<plugin>
<groupId>org.mule.tools</groupId>
<artifactId>mule-mmc-rest-plugin</artifactId>
<version>1.2.0-SNAPSHOT</version>
</plugin>
在我的神器中,我有以下神器 - 这是我上传的
<groupId>org.mule.tools</groupId>
<artifactId>mule-mmc-rest-plugin</artifactId>
<version>1.2.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
如何使第三方插件正常工作?如何修复此前缀?
答案 0 :(得分:0)
受http://java.dzone.com/articles/automated-deployment-mule的启发,我发现以下方法有效:
我下载了插件的代码,mvn打包了它。我将目标快照jar上传到artifactory,并将其上传到由团队在此处构建的快照的新repo。我确保maven也可以使用下面的内容在基于快照的pluginRepositories中查找插件。
在m2 / settings.xml中 - 因为我们希望Artifactory缓存所有工件,我们不希望开发人员机器访问Internet以进行工件解析:
<mirrors>
<mirror>
<id>artifactory</id>
<mirrorOf>*</mirrorOf>
<url>http://my.artifactory:8081/artifactory/repo</url>
</mirror>
</mirrors>
这也是必需的(从字面上看)。它使用Sonatype建议的方式来使用单个仓库(http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html)
<profiles>
<profile>
<id>artifactory-repos</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to artifactory via the mirror -->
<repositories>
<repository>
<id>central</id>
<!-- this is a bogus url - maven ignores it - dont change -->
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory-repos</activeProfile>
</activeProfiles>
最后,这增加了项目的主要内容:
<plugin>
<groupId>org.mule.tools</groupId>
<artifactId>mule-mmc-rest-plugin</artifactId>
<version>1.2.0-SNAPSHOT</version>
<executions>
<execution>
<id>mule-deploy</id>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<name>${artifactId}</name>
<username>muleuser</username>
<password>mulepass</password>
<version>${version}</version>
<serverGroup>Test</serverGroup>
</configuration>
</execution>
</executions>
</plugin>
最后,我们可以运行
mvn install -DmuleApiUrl=http://my.mulemmc:8080/mmc-console-3.4.0/api
我将muleApiUrl外部化,因为我们有多个mmc要部署到。
答案 1 :(得分:0)
对于偶然发现此问题的其他人,在原始问题中遇到相同错误后,我还能够使用mvn com.github.nicholasastuart:mule-mmc-rest-plugin:deploy
正确执行插件目标。
Github页面上的说明似乎与实际语法完全匹配(尽管存在内部存储库配置问题)。