摘要:如何使用Maven将一些生成的文件复制到Web服务器(如IIS或Apache)目录中?
详细信息:我有一个在Maven中构建的工作应用程序。我已经设法使用webstart maven插件构建了它,该插件在目录target/jnlp
中生成了所有需要的文件(.jar和.jnlp)。它还创建了一个zip文件,将它们全部放在target/foo-1.0.zip
中。
目前,webstart插件没有deploy
目标——对它的请求已经出现在常见问题解答中(问题3)。它可能会在未来实现,但目前的建议是使用wagon maven插件。
我从来没有用过Wagon。首先,我只想将文件复制到由Web服务器提供的本地目录中。稍后我想远程复制它们,可能使用ftp。有人能举一个例子说明我需要添加到pom.xml
中以使本地副本正常工作吗(希望还有一个ftp例子?)。我在文件中找不到它。从阅读中我想我可能还需要Wagon Maven文件提供程序,但由于这似乎几乎没有文档,我不确定。
Wagon提供商只是提供额外的网络协议支持(如FTP)。
如果你想将文件复制到网络服务器(本地或远程),你可以使用Maven上传插件:
...
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-upload-plugin</artifactId>
</plugin>
...
在父pom:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-upload-plugin</artifactId>
<version>1.1</version>
<configuration>
<resourceSrc>
${project.build.directory}/${project.build.finalName}.${project.packaging}
</resourceSrc>
<resourceDest>${jboss.deployDir}</resourceDest>
<serverId>${jboss.host}</serverId>
<url>${jboss.deployUrl}</url>
</configuration>
</plugin>
为了以智能的方式配置参数,我使用maven配置文件(在父pom中):
<profiles>
<!-- local deployment -->
<profile>
<id>developpement</id>
<properties>
<jboss.host>localhost</jboss.host>
<jboss.deployDir>appli/jboss-4.0.4.GA/server/default/deploy/</jboss.deployDir>
<jboss.deployUrl>file://C:/</jboss.deployUrl>
</properties>
</profile>
<!-- distant deployment -->
<profile>
<id>validation</id>
<properties>
<jboss.host>ENV_val</jboss.host>
<jboss.deployDir>/home/envval/jboss/server/default/deploy/</jboss.deployDir>
<jboss.deployUrl>scp://PROJECT_LAN_HOST</jboss.deployUrl>
</properties>
</profile>
</profiles>
我已经创建了一个"ant启动器",通过点击Eclipse ant视图下的来使用它
<target name="copy war to JBoss local" description="Copy war to local JBoss">
<maven goal="upload:upload" options="-Pdeveloppement" />
</target>
但你可以简单地在命令行上运行它:
mvn upload:upload -Pdeveloppement
EDIT:顺便说一句,对于远程部署,您可能需要登录密码才能使用scp。您必须将它们添加到Maven settings.xml文件中:
<settings>
...
<servers>
<server>
<id>ENV_val</id>
<username>login</username>
<password>password</password>
</server>
</servers>
...
</settings>
编辑:您需要添加Atlassian存储库:
<pluginRepositories>
<pluginRepository>
<id>Atlassian</id>
<url>https://maven.atlassian.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
EDIT:根据远程协议,您必须添加wagon扩展,请参阅使用带有Maven 的sftp上传目录
最后我没有使用Maven上传插件——它似乎有点有限,而且不是Maven主要发行版的一部分。我按照建议使用了maven wagon插件。这是我能做到的最简单的pom。希望其他人会觉得它有用,因为我很难找到类似的东西。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<configuration>
<fromDir>${project.build.directory}/jnlp</fromDir>
<includes>*</includes>
<url>file://c:/inetpub/wwwroot</url>
<toDir>jnlp</toDir>
</configuration>
</plugin>
对于远程分发版,您只需更改URL类型,并可能根据需要添加wagon扩展。