【问题标题】:My Maven Module isn't generating a JAR我的 Maven 模块没有生成 JAR
【发布时间】:2017-12-07 07:00:52
【问题描述】:

我有以下层次结构:

my-app
  \__ pom.xml
  \__ jar-module
        \__ pom.xml
  \__ webapp-module
        \__ pom.xml
  \__ core-module
        \__ pom.xml

其中core-module 充当为webapp-modulejar-module 提供通用代码的库。

webapp-module 工作正常,它按预期生成war,并且正在使用来自core-module 的代码。

问题在于jar-module。我不知道为什么,但jar-module 没有输出jar,即使我选择运行(在IntelliJ IDEA 中)一个简单的mainprintln() 它确实运行,但没有jartarget 文件夹上。

我该如何解决这个问题并使jar-module 输出jar

我对@9​​87654338@ 不是很有经验,我的目标是能够在本地Glassfishjar 上使用相同的Jersey 代码,以便部署在AWS Lambda Serverless Java Container部署前在本地进行测试。

如果对我的层次结构和pom 错误进行任何更正,我将不胜感激。

my-app pom.xml 有一个 packagingpom,但是 core-modulejar-module 有一个 packagingjarwebapp-module 有一个 packaging4@4。

这里是POMs:

我的应用 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>com.example.myapp</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>core-module</module>
    </modules>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

核心模块 POM: (我也试过&lt;packaging&gt;pom&lt;/packaging&gt;,没有jar skip属性,没用)

<?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>
    <parent>
        <artifactId>myapp</artifactId>
        <groupId>com.example.myapp</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>webservice-core</artifactId>
    <packaging>jar</packaging>
    <modules>
        <module>../jar-module</module>
        <module>../webapp-module</module>
    </modules>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.deploy.skip>true</maven.deploy.skip>
        <jar.skipIfEmpty>true</jar.skipIfEmpty>
        <maven.install.skip>true</maven.install.skip>
        <javax-ws-rs-version.version>2.1</javax-ws-rs-version.version>
        <jersey.version>2.26</jersey.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>${javax-ws-rs-version.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>${jersey.version}</version>
        </dependency>
    </dependencies>
</project>

webapp 模块 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>
    <parent>
        <artifactId>core-module</artifactId>
        <groupId>com.example.myapp</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>webapp-module</artifactId>
    <packaging>war</packaging>
    <name>webapp Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <jersey.version>2.26</jersey.version>
    </properties>
    <dependencies>
        <dependency>
            <artifactId>core-module</artifactId>
            <groupId>com.example.myapp</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>${jersey.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>webapp</finalName>
    </build>
</project>

jar 模块 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>
    <parent>
        <artifactId>core-module</artifactId>
        <groupId>com.example.myapp</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>jar-module</artifactId>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <jersey.version>2.26</jersey.version>
        <maven-shade-plugin.version>3.1.0</maven-shade-plugin.version>
    </properties>
    <dependencies>
        <dependency>
            <artifactId>core-module</artifactId>
            <groupId>com.example.myapp</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws.serverless</groupId>
            <artifactId>aws-serverless-java-container-jersey</artifactId>
            <version>0.8</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>${maven-shade-plugin.version}</version>
                <configuration>                    <createDependencyReducedPom>false</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

【问题讨论】:

    标签: java maven intellij-idea jar


    【解决方案1】:

    my-app 是您的父模块,其余是子模块,因此请在父项目 pom 中提供依赖项顺序,以便在构建项目时,maven 将提供您在父模块中提供的依赖项。

    <modules>
        <module>core-module</module>
    </modules>
    

    提供正确的顺序,如父模块和子模块,以了解构建的 maven。

    【讨论】:

      【解决方案2】:

      我的应用

      <modules>
          <module>core-module</module>
          <module>jar-module</module>
          <module>web-module</module>
      </modules>
      

      核心模块

      no <modules>
      

      这是一个干净的层次结构,由目录层次结构镜像。

      modules 与容器和parent 关系之间存在差异,以及其他细微之处。所以也许这会有所帮助。

      【讨论】:

      • 我认为这是我一开始的设置,它也没有生成一个 jar...但是我稍后会再次测试它...这里已经很晚了,我只需要在我尝试之前先睡一觉
      • 我发现了错误,我使用的是 IntelliJ IDEA,有一个特殊的“Maven 项目”窗口必须用于package 工件。
      猜你喜欢
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 2021-08-02
      • 2015-05-29
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      相关资源
      最近更新 更多