当前位置: 首页 > 知识库问答 >
问题:

使用eclipse构建Maven多模块

霍建柏
2023-03-14

我将转向maven多模块构建。

我的项目结构如下所示:

MyProject
|-->MyProject-Core
|   |->pom.xml (packaging jar)
|-->MyProject-Assets
|   |->pom.xml (packaging jar)
|-->MyProject-Libs
|   |->pom.xml (packaging jar)
|-->pom.xml (packaging pom, aggregator)

MyProject是一个Maven Eclipse项目,由M2E构建。

我添加了MyProject-Core/src/main/java作为Eclipse源文件夹,但由于我将父pom中的依赖项部分更改为dependencyManagement,因此我从Eclipse中得到了构建错误。手动调用mvn包仍然可以正常工作。

如何配置Eclipse以正确解决核心pom的依赖关系?

我仍然可以将依赖项作为作用域添加到父pom中:提供,但这是最好的解决方案吗?

父Pom:

<?xml version="1.0" encoding="UTF-8"?>
<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>
  <groupId>com.example</groupId>
  <artifactId>MyProject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>2.3.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.9</version>
        </plugin>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence 
          on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>
                      org.codehaus.mojo
                    </groupId>
                    <artifactId>
                      exec-maven-plugin
                    </artifactId>
                    <versionRange>
                      [1.2,)
                    </versionRange>
                    <goals>
                      <goal>java</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
          <archive>
            <index>true</index>
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifest>
              <packageName>com.example</packageName>
              <addDefaultImplementationEntries>true
              </addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true
              </addDefaultSpecificationEntries>
            </manifest>
            <manifestEntries>
              <SVN-Revision>${workingCopyDirectory.revision}</SVN-Revision>
            </manifestEntries>
            <compress>false</compress>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <modules>
    <module>MyProject-core</module>
  </modules>
</project>

核心Pom:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>MyProject</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>com.example</groupId>
  <artifactId>MyProject-Core</artifactId>
  <version>1.0-SNAPSHOT</version>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
  </build>
</project>

共有1个答案

吕霍英
2023-03-14

我尝试了很多配置,但M2E不将子模块识别为自己的项目,或者父模块项目不识别子模块中的更改。

现在,我创建了几个Eclipse项目,每个Maven项目一个,效果很好。

 类似资料:
  • 我正在学习RESTfulWeb服务教程http://www.concretepage.com/spring-4/spring-4-rest-web-service-json-example-tomcat.Is具有spring框架依赖项。我没有下载二进制文件并将其放入lib目录,而是在pom中包含了一个依赖项。xml类似 当我右键单击-

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

  • 我被这个错误弄得神魂颠倒,在我解决这个问题之前,我无法取得任何进展。 我有最新的STS(Spring Tool Source)3.7.1,专门用于Eclipse Mars 4.5.1。我删除了所有旧版本的STS,也删除了旧的.Eclipse文件,因为我希望这是一个全新的安装。我还进入了c:\Users\Tom Holmes\AppData文件夹,删除了“Spring Tool Suite”的所有痕

  • 问题内容: Eclipse使用它自己的编译器(ECJ)来编译Java代码。调试使用Eclipse编译的程序更加容易,因为可以立即应用简单的代码更改(通过热代码替换)。 另一方面,Maven使用(默认情况下)oracle JDK,它会生成不同的字节码,从而防止在Eclipse调试会话中进行热代码替换。 因此,如果我打算调试程序,我想在我的maven构建中使用Eclipse ECJ编译器。对我来说,便

  • 问题内容: 我有一个项目,我现在开始作为Maven项目,但是由于某种原因,它无法正常工作。这是我的pom.xml: 问题答案: 实际上,您的POM看起来有点奇怪: 它缺少Webapp项目的权利。 Maven War插件配置看起来不正确,您只是不需要添加的额外内容。 这是最小pom的样子: 因此,要么修改它,然后更新项目配置( 右键单击 您的项目,然后 右键单击 Maven >更新项目配置)。 或者

  • 当我试图清洁时 与“全部清除”过程类似,它抛出以下内容: 知道是什么导致的吗?