我有2个项目,A和B. B是一个lib项目,是对B的引用。
当我向B添加新功能时,可以在B上运行mvn install
,但在A上的mvn install
上失败,因为无法从新B中找到符号。
我确定我在项目B上安装正确,但为什么A仍然无法编译和安装?
这是A的pom.xml:
<dependency>
<groupId>A and B's group</groupId>
<artifactId>B</artifactId>
<scope>provided</scope>
</dependency>
任何线索?感谢
答案 0 :(得分:1)
我建议创建一个如下所示的多模块构建:
+-- root
+-- pom.xml
+-- module-A
+-- module-B
在根pom中,您需要定义这样的模块,并将包装定义为 pom 。
<modules>
<module>module-A</module>
<module>module-B</module>
</modules>
此外,您可以通过以下方式定义模块A与模块-B的依赖关系:
<project ..
<parent>
<groupId>project.parent</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>module-A</artifactId>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>module-B</artifactId>
<version>${project.version}</version>
</dependency>
..
</dependencies>
..
</project>
使用此设置,您只需通过以下方式从根文件夹构建所有模块:
mvn clean package
或者您可以将该结构导入Eclipse(m2e安装?)或任何其他IDE,如IntelliJ或Netbeans。
答案 1 :(得分:0)
尝试mvn clean install
进行全新的A版本,或mvn -U install
以强制Maven查找更新的快照。听起来您的环境仍在使用较旧的JAR。很难从这个描述中看出你的设置是什么 - 听起来你正确地将B安装到本地存储库,但我不确定你的IDE是否也试图'有用'。
答案 2 :(得分:0)
您可以在项目中包含<version>
元素以及依赖项声明。
${build.version}
模块A的pom.xml
:
<groupId>A & B's Group ID</groupId>
<artifactId>A</artifactId>
<version>${build.version}</version>
<dependencies>
<dependency>
<groupId>A & B's Group ID</groupId>
<artifactId>B</artifactId>
<version>${build.version}</version>
<type>war</type>
<scope>provided</scope>
</dependency>
...
因此,每当构建和安装项目B时,依赖项将在该特定版本的本地maven存储库中可用,并将由项目A选择