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

Sta*_*ack 13 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:run -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>
Run Code Online (Sandbox Code Playgroud)

khm*_*ise 12

首先遵循Maven中的约定,这意味着您的生产源代码应该在src/main/java.您还应该将属性文件或其他类型的文件(如xml文件)等资源定位到适合生产src/main/resources和单元测试的位置src/test/resources.

您应该更改的第一件事是迁移过程中项目的目录结构.这将为Maven中的配置节省许多麻烦,因为您违反了convention over configuration范例.

您的单元测试代码src/test/java并遵循单元测试的命名约定,这意味着仅为单元测试命名*Test.java.您无需定义套件即可运行所有测试.如果您遵循命名约定,maven-surefire-plugin将为您完成所有工作.

从您的pom配置中删除antrun插件并使用

mvn install
Run Code Online (Sandbox Code Playgroud)

而是将生产的jar安装到本地存储库中.根据构建生命周期,您将编译,单元测试并将代码打包到生成的jar文件中.

通常在Maven中没有理由mvn jar:jar单独打电话.

除此之外,你应该停止使用Maven 2.2.1,因为它已经定义了生命终结.最好从Maven 3.X开始.但我之前写的一切都是有效的Maven 3.