在lib文件夹中保留未更改的jar的时间戳



如何在lib文件夹中保留未更改的jar的时间戳?

我正在使用Robocopy将我的服务器库文件夹与本地机器镜像同步。我通过一个有点慢的vpn连接将我所有的jar复制到服务器上的lib文件夹中,只想复制那些更改过的jar,并删除任何不再需要的jar。\

我需要的是一种方法,以确保在我的Maven构建中,删除lib文件夹中不需要的jar,并且复制到lib文件夹中的jar只是以前没有的新jar。

我不想完全重建文件夹,因为这会修改jar上的时间戳,然后。。。我必须将它们全部复制到服务器

如果罐子的原始时间戳由maven保存,这样时间戳就可以与我的maven存储库中的时间戳保持一致。不幸的是,Maven给了他们一个新的时间戳。

我使用标准的maven设置pom来创建一个具有所有依赖项的lib文件夹:

<plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>${mainClass}</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

注:

我的大多数依赖jar都是稳定发布的jar,我的大多数项目依赖都是快照jar。无论如何,原始库jar的时间戳需要是放置在lib中的副本的时间戳。

假设lib中的jar是本地mvn存储库中的副本或jar,则mvn干净安装还应保留其在lib中放置的副本的文件lastmod时间。至少,应该是默认行为,因为lib包含原始mvn提取的jar文件的真实副本

同样有趣的是,mvn在将提取的jar放入本地存储库时,会保留它们的文件时间。插件是罪魁祸首,因为它负责将jar复制到lib中,并为它们分配新的时间戳(argg)!

如果您不介意不使用maven-dependency-plugin,您可以尝试在pom.xml:中使用这些配置

<build>
    <plugins>
        <plugin>
            <groupId>com.github.goldin</groupId>
            <artifactId>copy-maven-plugin</artifactId>
            <version>0.2.5</version>
            <executions>
                <execution>
                    <id>copy-deps</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <targetPath>${project.build.directory}/lib</targetPath>
                                <dependency>
                                    <includeScope>compile</includeScope>
                                </dependency>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我在本地机器中尝试过,它似乎产生了与本地M2存储库中的JAR相同的时间戳。

有关插件的更多信息,请点击此处:
http://evgeny-goldin.com/wiki/Copy-maven-plugin

最新更新