Maven使用旧版本的pom.xml

时间:2016-02-04 17:18:10

标签: java maven

我刚刚开始在我的一个Java项目中使用Maven。我花了一些编辑让Maven接受了pom.xml,但我终于让它工作了。但令我惊讶的是,它仍然使用旧版pom.xml

问题是我甚至无法在项目目录中找到它。我使用Notepad ++进行所有编辑。当我打开pom.xml时,它是正确的(最新)版本。当我用jd-gui查看JAR时,它是Maven抱怨的先前版本。这毫无意义。我尝试删除目标目录中的所有内容并运行' maven clean'无济于事。

这是当前的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>my.project</groupId>
    <artifactId>solint</artifactId>
    <version>1.0</version>
    <name>SolInt</name>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <!-- Prepares Agent JAR before test execution -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Can-Retransform-Classes>true</Can-Retransform-Classes>
                                    <Premain-Class>my.project.Agent</Premain-Class>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.13</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.13</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.20.0-GA</version>
        </dependency>
    </dependencies>

</project>

我能够强制Maven使用最新版pom.xml的唯一方法是将整个项目复制到另一个目录。我想了解这个谜。有什么想法吗?

编辑1:

以下是JAR如何照顾mvn package。请注意,这个有正确的pom.xml,因为我更改了根目录。 JAR view in jd-gui

2 个答案:

答案 0 :(得分:1)

如果删除了所有内容,那么构建的jar文件的下一个副本应包含当时的当前pom.xml文件。

但是,如果您实际上是从〜/ .m2 / repo缓存中加载JAR文件,那么您需要执行maven安装来更新缓存,然后使用该JAR的项目将获得上次安装版本

答案 1 :(得分:0)

我建议你看看here,找出pom.xml在文件夹结构中的位置。

另一个重要的事情是了解你的文件夹结构应该如何;为此,请查看here

基本上,你应该有这样的东西:

+ Project Folder
|
+ src
   |
   + main
       | 
       + java
           |
           + {here goes your package, classes, etc.}
                      |
                     i.e.
                      |
                      + com
                          |
                          + sample
                               |
                               + HelloWorld.java
|
+ pom.xml

同样重要的是,您可以从其他Poms继承poms,并且您也可以聚合以在项目上对多个poms进行分组,请检查this以获取更多信息。

另外,我建议您使用IDE而不仅仅是Notepad ++,例如IntelliJEclipse;两者都有Maven Integration。