我使用 Ant 构建自定义 jar 库,然后在 Maven 中将其用作依赖项。
<dependency>
<groupId>test-lib</groupId>
<artifactId>test-lib</artifactId>
<version>1.0.0system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/test-lib-1.0.0.jar</systemPath>
</dependency>
所以,基本上我现在做的是:
1)运行ant来构建自定义库(test-lib-1.0.0.jar)
2)运行:mvncompile,使用自定义库等来编译我的项目。
我是否有一个选项可以完成这一切(打包自定义 jar 和编译项目)
马文?
我找到了 maven run 插件,这是我的设置:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.4
<executions>
<execution>
<phase>?????what to put here?????/phase>
<configuration>
<tasks>
<ant antfile="${basedir}/build.xml">
<target name="prepare-test-lib" />
</ant>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
但是,运行时:mvn compile
它抱怨缺少工件:test-lib-1.0.0.jar
。
我使用过编译,生成资源,...<phase/>
标签,但似乎没有任何作用。
是否可以使用此插件以某种方式解决这个问题?
使用 Maven Antrun Plugin 时,Maven 会尝试解析构建的依赖关系类路径 http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html对于 AntRun 调用,您将面临先有鸡还是先有蛋的问题:您无法声明将在 AntRun 执行期间创建的依赖项,而该依赖项需要运行该依赖项。这是行不通的。
我的建议是mavenize你的test-lib
,将其包含在您的项目构建中并声明对其的常规依赖项。换句话说,我的意思是从 Ant 迁移到 Maven 来构建你的test-lib
并设置多模块项目 http://www.sonatype.com/books/mvnex-book/reference/multimodule.html。
为了更“直观地”说明事情,像这样:
my-project
|-- my-module
| |-- src
| | `-- main
| | `-- java
| `-- pom.xml
|-- test-lib
| |-- src
| | `-- main
| | `-- java
| `-- pom.xml
`-- pom.xml
Where my-project/pom.xml
是一个聚合 pom,其中包含<packaging>pom</packaging>
并列出 a 下的模块<modules>
元素:
<modules>
<module>my-module</module>
<module>test-lib</module>
</modules>
还有哪里my-module/pom.xml
声明对test-lib
人工制品:
<dependency>
<groupId>your.group.id</groupId>
<artifactId>test-lib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
我只是在这里给出一个非常高层次的概述,您需要阅读一些文档以了解详细信息,我无法涵盖所有内容。从 Sonatype 的第一本书开始(链接如下)。
但这是正确的方法(而且你不应该(ab)使用system
范围依赖)。
参考
- Maven:权威指南 http://www.sonatype.com/products/maven/documentation/book-defguide
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)