Maven 2.2.1:[Wanrning] JAR将为空 - 没有内容标记为包含

时间:2015-06-23 16:12:39

标签: maven

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>

1 个答案:

答案 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。