Maven 2.2.1 JDK - 1.6.0_45
[警告] JAR将为空 - 没有内容标记为包含! 建立成功
但是build使用pom.xml 创建jar,但没有类文件。
在maven源代码上,仅当找不到源目录时才抛出此异常。
该版本适用于所有其他开发人员,除了我的工作站和另外一个工作站
我已经尝试了在堆栈溢出时为此问题提供的所有解决方案。
我的源目录是 src / java 。 我还创建了src / main / java作为源仍然没有结果。 我打电话给mvn -o jar:jar&&叫mvn -o antrun:运行 -o就在这一点上,我正在测试一些旧罐子。
<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>
答案 0 :(得分:9)
首先关注conventions in Maven,这意味着您的生产源代码应该在src/main/java
。您还应该将属性文件或其他类型的文件(如xml文件)等资源定位到生产src/main/resources
和单元测试src/test/resources
的正确位置。
您应该更改的第一件事是迁移过程中项目的目录结构。这样可以避免Maven配置中的许多麻烦,因为你违反了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。