【问题标题】:Maven 2.2.1: [Warning] JAR will be empty - no content was marked for inclusionMaven 2.2.1:[警告] JAR 将为空 - 没有内容被标记为包含
【发布时间】:2015-06-23 16:12:39
【问题描述】:

Maven 2.2.1 JDK - 1.6.0_45

[警告] JAR 将为空 - 没有内容被标记为包含! 构建成功

但是 build 使用 pom.xml 创建 jar 但没有类文件

在 maven 源代码中,只有在找不到源目录时才会引发此异常。

该版本适用于除我的工作站和另外一个工作站之外的所有其他开发人员

我已经尝试了针对堆栈溢出问题提供的所有解决方案。

我的源目录是 src/java。 我还创建了 src/main/java 作为源仍然没有结果。 我正在调用 mvn -o jar:jar && call mvn -o antrun:run -o 是因为此时我正在使用一些旧 jar 进行测试。

<build>
        <sourceDirectory>src/java</sourceDirectory>
        <resources>
            <resource>
                <directory>${basedir}/src/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${basedir}/src/test/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </testResource>
        </testResources>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <debug>true</debug>
                    <optimize>false</optimize>
                    <showDeprecation>true</showDeprecation>
                    <source>1.5</source>
                    <target>1.5 </target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>test*/temp/*.java</exclude>
                        <exclude>test*/support/*.java</exclude>
                        <exclude>test*/debug/*.java</exclude>
                    </excludes>
                    <includes>
                        <include>test*/**/AllTests.java</include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>default-cli</id>
                        <phase>install</phase>
                        <configuration>
                            <target>
                                <copy file="${project.build.directory}/${artifactId}-${version}.jar"
                                    todir="${user.home}/.m2/repository/${groupId}/${artifactId}/${version}" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

【问题讨论】:

  • 您在 POM 文件中是否有 &lt;packaging&gt; 的条目?当您尝试运行 mvn compile 时会发生什么?
  • 检查您的 basedir 包括,它只包括 .xml 和 .properties 因此排除所有其他
  • @Ryan J:是的,它是 jar
  • @Danielson - 这些资源包括在内。我确实有 我尝试添加 .java 和 .class 也没有工作。
  • @Stack 抱歉。我试过了,但是在我所有的项目中都有 Lambda 函数,不会编译到 Java 5。你的公司仍然应该更新到本世纪的 ;-)

标签: maven


【解决方案1】:

首先关注conventions in Maven,这意味着您的生产源代码应位于src/main/java。您还应该将您的资源(如属性文件或其他类型的文件(如 xml 文件))定位到适当的位置,用于生产src/main/resources 和单元测试src/test/resources

您应该更改的第一件事是迁移过程中项目的目录结构。由于您违反了convention over configuration 范式,这将省去许多在 Maven 中进行配置的麻烦。

您在src/test/java 中的单元测试代码并遵循naming conventions for unit tests 这意味着将您的单元测试命名为*Test.java 仅此而已。您不需要定义一个套件来运行所有测试。如果您遵循命名约定,maven-surefire-plugin 将为您完成所有工作。

从你的 pom 配置中移除 antrun 插件并使用

mvn install

而不是将您生成的 jar 安装到本地存储库中。基于build life cycle,您将编译、单元测试并将您的代码打包到生成的 jar 文件中。

通常在 Maven 中没有理由单独调用 mvn jar:jar

除此之外,您应该停止使用Maven 2.2.1 cause it has defined End Of Life。最好从 Maven 3.X 开始。但我之前写的一切都是有效的 Maven 3。

【讨论】:

  • 谢谢@khmarbaise。建议的升级正在进行中。与此同时,我正在尝试解决一个只能在一个或两个工作站上重现并为其他工作站工作的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 2023-01-03
  • 1970-01-01
相关资源
最近更新 更多