我正在研究一个使用过的项目ant.我有一个dist基本上先做的目标,jar然后将应用程序安装到目录中.
这意味着,它会创建像目录bin/,lib/并config/在安装目录,然后将相关的文件复制到这些目录中.
我的问题是双重的:
maven dist并实现这一目标.您如何建议我使用Maven完成此操作?结论:我想做所有这些,但不想改变默认"目标"的行为,如编译和包等.
谢谢,jrh
PS:我正在使用maven版本 2.2.21
我不知道是什么会去config,但lib和bin容易.
要将所有依赖项复制到文件夹,只需执行以下操作:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/dist/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
要将jar输出到bin文件夹,请执行此操作(参考页面):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<finalName>${project.artifactId}</finalName>
<outputDirectory>${project.build.directory}/dist/bin</outputDirectory>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
啊,还有其他要求:
结论:我想做所有这些,但不想改变默认"目标"的行为,如编译和包等.
在这种情况下,我将使用配置文件打开它:
<profile>
<id>dist</profile>
<build>
<plugins>
<!-- insert stuff from above here -->
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
现在,您将mvn clean package -Pdist获取dist目录,如果不添加配置文件,则会获得默认行为.
基本上,maven的工作方式与他们在ant中的工作方式不同.没有目标,只有生命周期阶段和插件目标.
您可以执行一个生命周期阶段,这将调用绑定到所有阶段的所有Maven插件目标,到这一个(例如,如果你这样做mvn compile,以下几个阶段将被执行:validate,initialize,generate-sources,process-sources,generate-resources,process-resources,compile).但是没有(简单的)方法来定义命名的生命周期阶段dist.
或者您可以执行特定的插件目标(您实际上可以执行多个阶段和/或插件目标).例如,您可以编写自己的dist插件并使用它来调用它mvn dist:dist,但我不建议这样做,因为您使用的是现有功能,并且配置文件解决方案应该非常合适.
| 归档时间: |
|
| 查看次数: |
6761 次 |
| 最近记录: |