maven构建依赖jar文件不反映代码的变化

Posted

技术标签:

【中文标题】maven构建依赖jar文件不反映代码的变化【英文标题】:maven build dependency jar file not reflecting changes in code 【发布时间】:2017-10-06 10:37:20 【问题描述】:

我正在尝试使用目标 mvn 包构建一个 maven 项目。当我构建项目时,会生成两个 jar 文件,一个是 demo-lwm2m-client-1.0-jar-with-dependencies.jar,另一个是 demo-lwm2m-client -1.0.jar。现在,如果我对放置在 src/main/resources 中的文件进行一些更改并再次构建项目,我发现 demo-lwm2m-client-1.0-jar-with-dependencies.jar 没有反映更改了我在代码中所做的事情,而 demo-lwm2m-client-1.0.jar 反映了更改。如何在依赖项 jar 中反映我的代码更改。下面是我的 pom.xml 的代码。 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.demo.lwm2m.client</groupId>
<artifactId>demo-lwm2m-client</artifactId>
<packaging>jar</packaging>
<version>1.0</version>

<name>DemoLwm2mClient</name>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.eclipse.leshan</groupId>
        <artifactId>leshan-client-cf</artifactId>
        <version>1.0.0-M1</version>
    </dependency>


    <dependency>
        <groupId>com.appiot.examples</groupId>
        <artifactId>simulatedplatform</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>       
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.5</version>
    </dependency>
</dependencies>
<repositories>

    <repository>
        <id>eclipse</id>
        <url>https://repo.eclipse.org/content/repositories/leshan-snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>       
</repositories>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.demo.lwm2m.MainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id> <!-- this is used for inheritance merges -->
                    <phase>package</phase> <!-- bind to the packaging phase -->
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

【问题讨论】:

试试 mvn 包。 我试过了,它也不起作用@SudhaVelan 【参考方案1】:

使用mvn clean install。这将重建所有内容并包括所有更改。

【讨论】:

它不反映更改,也在目标/类文件夹中我可以看到来自 src/main/resources 的文件以及我所做的更改 显然您必须手动删除生成的 jar 并再次运行 mvn package

以上是关于maven构建依赖jar文件不反映代码的变化的主要内容,如果未能解决你的问题,请参考以下文章

maven依赖jar包更新,业务jar需同步更新(业务jar依赖API)

可以使Maven构建包含依赖项中的.class文件[重复]

sbt / maven是否包含jar文件中的完整依赖项?

Maven

在maven项目中导入外部jar而不创建依赖项[重复]

maven常用的lifecycle,clean/install/deploy,maven打包jar包,maven打包强制拉取最新依赖