我有以下项目结构:
-parent (<packaging>pom</packaging>)
|
|--project 1(jar)
|
|--project 2 (jar, depends on project 1)
|
|--project 3 (jar, depends on project 1)
问题:
mvn exec:java
来自哪个项目?mvn clean package
,则找不到project1)。我想在不安装project1之前做到这一点。当然,如果需要,可以更改项目的结构。
下面显示了pom.xml文件的相关部分。 父/ 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>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>0.0.4-SNAPSHOT</version>
<name>parent: the parent project</name>
<groupId>com.domain</groupId>
<modules>
<module>project1</module>
<module>project2</module>
<module>project3</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.domain</groupId>
<artifactId>project1</artifactId>
<version>${version.releaseVersion}</version>
</dependency>
<dependency>
<groupId>com.domain</groupId>
<artifactId>project2</artifactId>
<version>${version.releaseVersion}</version>
</dependency>
<dependency>
<groupId>com.domain</groupId>
<artifactId>project3</artifactId>
<version>${version.releaseVersion}</version>
</dependency>
</dependencies>
</dependencyManagement>
//other plugins defined in the <build> tag are not shown here
</project>
父/ PROJECT1 / 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>parent</artifactId>
<groupId>com.domain</groupId>
<version>0.0.4-SNAPSHOT</version>
</parent>
<artifactId>project1</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Project1: common classes</name>
</project>
父/项目2 / 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>parent</artifactId>
<groupId>com.domain</groupId>
<version>0.0.4-SNAPSHOT</version>
</parent>
<artifactId>project2</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Project2: JMS gateway</name>
<dependencies>
<dependency>
<groupId>com.domain</groupId>
<artifactId>project1</artifactId>
</dependency>
</dependencies>
<build>
<finalName>project2-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>com.domain.jmsgateway.Demon</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
parent / project3 / pom.xml与project2
相似答案 0 :(得分:0)
Re 1。:&#34;如何在项目2中执行课程?&#34;
Maven是一个构建工具。默认情况下,您的main
课程不会自动执行。执行main
类应该通过将适当的Maven插件分配/绑定到默认生命周期的integration-test
阶段或在构建之后完全在Maven外部来配置 - 具体取决于您的项目。 / p>
如果您使用默认生命周期的test
阶段或其中一个阶段调用mvn
,则会执行test
个类(默认情况下为Maven Surefire Plugin)进一步在Lifecycle Reference。
Re 2. &#34;我想在不安装project1的情况下这样做。&#34;
如果你没有预先安装p1
,那么在构建p2
时Maven应如何解决p1
?见Maven Dependency Resolution – A Repository Perspective:
当Maven从存储库中解析依赖项时,这些是它遵循的基本步骤:
1。如果此依赖关系的范围是system,则只需从本地文件系统解析它。
2。尝试从本地存储库中找到依赖 ,如果找到则解析它。
3。到8。 [包括远程存储库]