我目前正在处理一个相当大的项目,该项目已从 Ant 迁移到 Maven。实际构建过程没有问题(它可以很好地编译和打包源代码)。
问题是我还有很多为项目生成额外资源的目标(编译 LessCSS、生成和上传文档、tld
为自定义标签和函数生成文件等)。我不确定我应该如何处理这些任务。我们以构建 CSS&JS 的目标为例(其他的或多或少相似,但没有联系)。它看起来像这样(简化):
<target name="build.css_js">
<concat destfile="${webapp.dir}/scripts/main.js">
<fileset dir="${webapp.dir}/scripts/src" includes="*.js"/>
</concat>
<!-- build css files from less sources -->
<taskdef name="lesscss" classname="com.asual.lesscss.LessEngineTask" classpathref="libraries" />
<lesscss input="${webapp.dir}/syles/src/input.less" output="${webapp.dir}/styles/output.css" />
</target>
在pom.xml
我设置了以下插件:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<configuration>
<tasks>
<echo message="Hello World from pom.xml"/>
<ant target="build.css_js"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
我正在使用的依赖项不再在我们的 SVN 存储库中(因为它们由 Maven 管理),所以我将库变量切换为指向 Maven 存储库:
<property name="lib.dir" location="${env.HOMEPATH}/.m2/repository" />
这不好,因为该路径可能仅在我的机器上有效。我不知道从 Maven 存储库中引用库的任何其他方式,我需要它们来运行 ant 目标。
- 我的方法可以吗,还是有更好的做事方式?
- 如何解决图书馆问题?
- 打包项目时需要一些资源,但有些则不需要。
是否存在超出编译/打包范围的生命周期阶段?我找到了site
我认为符合我需求的生命周期。 - 理想情况下,我应该完全放弃 ant 构建文件,但我不确定让脚本作为 maven 插件运行是否值得(我目前不知道该怎么做)。你怎么看待这件事?
我是 Maven 的新手,所以任何建议都值得赞赏。