idea 开发多模块之间依赖的项目,不是父子模块的情况下,一个模块如何成功打包?

入门idea使用不久,也不太熟练maven构建工具。

新建一个空项目,创建两个maven模块,分别是测试普通java模块工程和测试Web工程模块(打成Jar包),这两个模块没有父子关系。以下是相关代码

模块工程截图

测试java代码:
TestUtil:

package test;

public class TestUtil {
    public static void test(){

        System.out.println("调用工具包:Hello Word");

    }

}

AppStart1代码

package start;

import test.TestUtil;

public class AppStart1 {

    public static void main(String[] args) {
        System.out.println("测试5");
        TestUtil.test();
    }

}

TestUtilMaven1的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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>me.test</groupId>
    <artifactId>TestUtilMaven1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

TestMavenMainWeb2的pom代码:

<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>me.test</groupId>
  <artifactId>TestMavenMainWeb2</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>TestMavenMainWeb2 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>me.test</groupId>
      <artifactId>TestUtilMaven1</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>

  </dependencies>
  <build>
    <finalName>TestMavenMainWeb2</finalName>
    <resources>

      <resource>

        <directory>src/main/resources</directory>

        <excludes>
          <exclude>**/*.*</exclude>
        </excludes>
        <filtering>false</filtering>
      </resource>


      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.sql</include>
        </includes>
      </resource>

    </resources>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>11</source>
          <target>11</target>
          <encoding>UTF-8</encoding>
          <!-- java11 保留参数名编译参数 -->
          <compilerArgument>-parameters</compilerArgument>
          <compilerArguments><verbose /></compilerArguments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <finalName>demo</finalName>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>start.AppStart1</mainClass>
                </transformer>

                <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                  <resources>


                    <!-- <resource>demo-config-dev.txt</resource> -->
                    <!-- <resource>.PDF</resource> -->
                    <!-- <resource>READ.md</resource> -->
                  </resources>
                </transformer>
              </transformers>


              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                  </excludes>
                </filter>
              </filters>

            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
</project>

TestUtilMaven1是一个工具库模块,而TestMavenMainWeb2是一个Web模块,我的要求是,TestMavenMainWeb2调用TestUtilMaven1一些静态方法。完成后,打包TestMavenMainWeb2模块,打成jar包,然后通过java cmd命令运行jar

但是打包时出现以下错误提示:

"C:\Program Files\Java\jdk-11.0.8.10-hotspot\bin\java.exe" -Dmaven.multiModuleProjectDirectory=XX\TestMavenMainWeb2 -Djansi.passthrough=true "-Dmaven.home=D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\plugins\maven\lib\maven3" "-Dclassworlds.conf=D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\lib\idea_rt.jar=2102:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar;D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.3.1\plugins\maven\lib\maven3\boot\plexus-classworlds.license" org.codehaus.classworlds.Launcher -Didea.version=2022.3.1 -s D:\develop_config\maven\apache-maven-3.8.4\conf\settings.xml install
[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------< me.test:TestMavenMainWeb2 >----------------------
[INFO] Building TestMavenMainWeb2 Maven Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The POM for me.test:TestUtilMaven1:jar:1.0-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.143 s
[INFO] Finished at: 2023-02-03T10:42:17+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project TestMavenMainWeb2: Could not resolve dependencies for project me.test:TestMavenMainWeb2:jar:1.0-SNAPSHOT: Could not find artifact me.test:TestUtilMaven1:jar:1.0-SNAPSHOT -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

Process finished with exit code 1

问题:Failed to execute goal on project TestMavenMainWeb2: Could not resolve dependencies for project me.test:TestMavenMainWeb2:jar:1.0-SNAPSHOT: Could not find artifact me.test:TestUtilMaven1:jar:1.0-SNAPSHOT
如何解决这个问题

阅读 2k
1 个回答

先install TestUtilMaven1发布到本地仓库
再去build TestMavenMainWeb2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏