使用maven Maven-Mule-REST-Plugin

时间:2014-06-03 10:26:20

标签: rest maven plugins mule

我正在尝试使用这个插件,但是在试图了解如何让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>

如何使第三方插件正常工作?如何修复此前缀?

2 个答案:

答案 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页面上的说明似乎与实际语法完全匹配(尽管存在内部存储库配置问题)。