如何告诉wagon-maven-plugin使用settings.xml中的用户名和密码?

时间:2013-08-07 19:42:38

标签: maven maven-plugin

我正在使用名为maven-enunciate-plugin的插件生成rest api的(非javadoc)文档。现在我想将它上传到我的javadoc存储库。我正在使用wagon-maven-plugin

问题是,我无法弄清楚如何告诉wagon插件在本网站的settings.xml中使用用户名/密码。如果您使用maven-site-plugin,它似乎知道如何通过定义distributionManagement标记来做到这一点,但我没有使用maven-site-plugin插件,因为我在没有它的情况下生成文档。

这是我的pom来展示我尝试过的东西:

<profile>
    <id>generate-rest-doc</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.enunciate</groupId>
                <artifactId>maven-enunciate-plugin</artifactId>                
                <version>1.27</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>docs</goal>
                        </goals>
                        <configuration>
                            <docsDir>${project.build.directory}/docs</docsDir>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>1.0-beta-4</version>
                <executions>
                    <execution>
                        <id>upload-javadoc</id>
                        <phase>package</phase>
                        <goals>
                            <goal>upload</goal>
                        </goals>
                        <configuration>
                            <fromDir>${project.build.directory}/docs</fromDir>
                            <includes>*</includes>
                            <url>scp://MY-REPO/var/www/html/projects/rest-war</url>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <distributionManagement>
        <site>
            <id>javadoc</id>
            <url>scp://MY-REPO/var/www/html/projects/-rest-war</url>
        </site>
    </distributionManagement>
</profile>
....
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>1.0-beta-6</version>
        </extension>
    </extensions>
</build>

2 个答案:

答案 0 :(得分:3)

在搜索此问题的解决方案时遇到此博文:http://blog.darrenscott.com/2010/08/05/uploading-files-using-scp-and-the-maven-wagon-plugin/ 基本上,您需要在serverId中使用configuration属性。 希望这有助于某人。

答案 1 :(得分:1)

我想出了一个解决方法。我没有直接使用wagon-maven-plugin,而是使用maven-site-plugin。我明确使用部署目标指向maven-enunciate-plugin生成的目录。

所以上面我注释了wagon插件并在enunciate插件下面添加了这个:

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.wagon</groupId>
                            <artifactId>wagon-ssh</artifactId>
                            <version>2.4</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <id>upload-javadoc</id>
                            <phase>package</phase>
                            <goals>
                                <goal>deploy</goal>
                            </goals>
                            <configuration>
                                <inputDirectory>${project.build.directory}/docs</inputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>