我已经阅读了许多关于Maven入门的文档和教程。但很少有事情对我来说仍然不清楚:
1)当pom.xml包含<dependency>
时,Maven会将该工件/ JAr放在Maven本地存储库中。对吗?
2)假设我在MAven项目中有子模块。那么构建项目的正确方法是什么?一个应该从父模块开始,然后转到更多的子模块。对 ?那么maven会创建依赖jar并将它们放在Maven Repo本地文件夹中吗?
3)例如,如果我的子模块pom.xml包含以下依赖项。我应该如何向Maven提供它(vd-ps.jar)以便Maven在Submodule / pom.xml上进行Maven clean安装时找到它?我的意思是说Maven需要什么,或者从哪里生成这样的用户定义的vd-ps.jar?来自编译的类文件?
<dependencies>
<dependency>
<groupId>com.b.t</groupId>
<artifactId>vd-ps</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
好的,让我直接询问我想要实现的目标:我有以下pom.xml。从中我想创建一个单独的maven项目(Say PTest),它使用另一个大型多模块maven项目的依赖项(jars)。这里: - 我的多模块项目中有一个名为v-parent的模块,在其trunk文件夹中有pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.b.t</groupId>
<artifactId>v-parent</artifactId>
<version>3.9.0</version>
</parent>
<groupId>com.b.t.test</groupId>
<artifactId>p_test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ptesting</name>
<dependencies>
<dependency>
<groupId>com.b.t</groupId>
<artifactId>v-ps</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</project>
1)现在我应该把这个子模块的v-parent放在eclipse中新创建的Maven项目(PTest)中?
我的意思是如何让我的PTest / pom.xml找到这个父jar v-parent.jar?
我有一个名为v-ps.jar的独立jar文件。我应该在哪里准确地(在哪个结构中)将它放在Maven本地仓库中以便它可以找到它?
答案 0 :(得分:1)
每次运行
<p>Change Value to clear Textbox:
<select onchange="clearTextArea();">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</p>
<textarea style="width:100%;" id="fldAdditionalInformation" onkeyup="auto_grow(this)"></textarea>
您的项目将被构建,并且将安装生成的工件&#39;在您的本地存储库中(通常是〜/ .m2 / repository)。因此,如果您构建了一个生成jar com.b.t:vd-ps:1.1.0的项目,那么它将在您的本地存储库中可供其他项目用作依赖项。
如果依赖项位于同一父项下的另一个模块中,则可以包括如下:
mvn clean install
如果您运行
<dependency>
<groupId>com.b.t</groupId>
<artifactId>vd-ps</artifactId>
<version>${project.version)</version>
</dependency>
如果你的pom.xml中有正确的配置,你的工件将被构建并部署到远程存储库(Nexus或Artifactory或类似工具)
请参阅https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
答案 1 :(得分:0)
1)现在我应该把这个子模块的v-parent放在eclipse中新创建的Maven项目(PTest)中? 我的意思是如何让我的PTest / pom.xml找到这个父jar v-parent.jar?
所以在这种情况下&#34; v-parent&#34;将是Eclipse中包装类型&#34; pom&#34;的另一个项目。如果你想构建子项目&#34; p_test&#34;及其依赖&#34; v-ps&#34;,您可以将它们列为&#34; v-parent&#34;中的模块。项目的pom文件如下:
<project>
<groupId>com.b.t</groupId>
<artifactId>v-parent</artifactId>
<version>3.9.0</version>
<packaging>pom</packaging>
<modules>
<module>p_test</module> <!-- Make sure you provide the right path here -->
<module>v-ps</module> <!-- Make sure you provide the right path here -->
</modules>
</project>
现在当你运行&#34; mvn clean install&#34; on&#34; v-parent&#34;它应该建立&#34; p_test&#34;和&#34; v-ps&#34;项目并将他们的jar文件的副本放在您当地的.m2 /存储库中,假设这些项目在构建期间不会出错。因此,父项目就像子项目的聚合一样,有助于一次性构建它们。
我有一个名为v-ps.jar的独立jar文件。我应该在哪里准确地(在哪个结构中)将它放在Maven本地仓库中以便它可以找到它?
如果您拥有此项目的来源,那么您应该将其作为&#34; v-parent&#34;的一部分包含在内。如上所述,将project的pom作为模块,当你构建父项时,成功时,jar会被写入你当地的.m2 repo。或者如果你有&#34; v-ps&#34;的来源。项目,您可以使用&#34; mvn clean install&#34;直接构建它。并且罐子将写入回购。