gpt4 book ai didi

Maven 2.2.1 : [Warning] JAR will be empty - no content was marked for inclusion

转载 作者:行者123 更新时间:2023-12-03 23:47:39 34 4
gpt4 key购买 nike

Maven 2.2.1
JDK - 1.6.0_45

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

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

在 Maven 源代码中,仅当找不到源目录时才会引发此异常。

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

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

我的源目录是源代码/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>

最佳答案

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

您应该更改的第一件事是迁移过程中项目的目录结构。由于您违反了 convention over configuration范例。
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。

关于Maven 2.2.1 : [Warning] JAR will be empty - no content was marked for inclusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008058/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com