maven部署插件忽略版本号?
我是Maven的新手,我尝试将我的项目部署为war和jar。我很想分割项目来做同样的事情,但它太大了,简单的我无法在合理的时间内完成 我发现,这建议我添加一些插件 安装插件工作得很好maven部署插件忽略版本号?,maven,plugins,jar,Maven,Plugins,Jar,我是Maven的新手,我尝试将我的项目部署为war和jar。我很想分割项目来做同样的事情,但它太大了,简单的我无法在合理的时间内完成 我发现,这建议我添加一些插件 安装插件工作得很好 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <executions>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>SNAPSHOT</version>
<file>
${project.build.directory}/${project.artifactId}-SNAPSHOT.jar
</file>
</configuration>
</execution>
</executions>
</plugin>
问题在于maven部署插件。它似乎忽略了我强制它使用的快照版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<generatePom>true</generatePom>
<url>${project.distributionManagement.snapshotRepository.url}</url>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>SNAPSHOT</version>
<!--${project.version}!="SNAPSHOT" for some reason-->
<file>${project.build.directory}/${project.artifactId}-SNAPSHOT.jar</file>
</configuration>
</execution>
</executions>
</plugin>
我做错了什么?我观察到的一件事是,您使用的版本快照没有任何前面的数字,例如:
1.0.0-SNAPSHOT
或者至少:
1-SNAPSHOT
在本例中,您只是在使用快照,这是因为您正在谈论的是哪条开发线
另一件事是,Maven中的快照(假设您以正确的方式使用它)是一个工件,将在其中放置时间戳而不是快照。这是使发布多个快照成为可能的方法,但要使它们区分开来
因此,您在输出中显示的内容正是Maven从快照中得到的:
[INFO] [deploy:deploy-file {execution: default}]
[INFO] Retrieving previous build number from remote-repository
Uploading: http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/my-project-20120625.161551-2.jar
42993K uploaded (my-project-20120625.161551-2.jar)
我观察到的一点是,您使用的版本快照没有任何前面的数字,例如:
1.0.0-SNAPSHOT
或者至少:
1-SNAPSHOT
在本例中,您只是在使用快照,这是因为您正在谈论的是哪条开发线
另一件事是,Maven中的快照(假设您以正确的方式使用它)是一个工件,将在其中放置时间戳而不是快照。这是使发布多个快照成为可能的方法,但要使它们区分开来
因此,您在输出中显示的内容正是Maven从快照中得到的:
[INFO] [deploy:deploy-file {execution: default}]
[INFO] Retrieving previous build number from remote-repository
Uploading: http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/my-project-20120625.161551-2.jar
42993K uploaded (my-project-20120625.161551-2.jar)
在相应的远程存储库中有一个
http://build.example.biz:8081/artifactory/libs-快照local/com/example/main project/my project/SNAPSHOT/maven metadata.xml
。如果您查看一下,您将看到最新的时间戳映射到相应的快照
。这是Maven 2和3下的典型行为。我相信在Maven 3下,使用时间戳快照-s是默认行为
当您尝试通过Maven下载工件时,我相信它会为您正确地解决它,因此您不应该感到惊慌。在相应的远程存储库中有一个http://build.example.biz:8081/artifactory/libs-快照local/com/example/main project/my project/SNAPSHOT/maven metadata.xml
。如果您查看一下,您将看到最新的时间戳映射到相应的快照
。这是Maven 2和3下的典型行为。我相信在Maven 3下,使用时间戳快照-s是默认行为
当您尝试通过Maven下载工件时,我相信它会为您正确地解决问题,因此您不应该感到惊慌。为什么要将war部署为jar?我可能误解了您希望实现的目标吗?我希望将其部署为war和jar:一个pom中的两个工件。这不是答案,因为war存档有特定的意图,而jar有不同的意图。战争将被部署到像Tomcat这样的东西中,但jar不能单独部署到Tomcat中。所以这种方法没有意义。或者你的意思是src/main/java区域应该单独放在一个jar中吗?为什么要将war部署为jar?我可能误解了您希望实现的目标吗?我希望将其部署为war和jar:一个pom中的两个工件。这不是答案,因为war存档有特定的意图,而jar有不同的意图。战争将被部署到像Tomcat这样的东西中,但jar不能单独部署到Tomcat中。所以这种方法没有意义,还是说src/main/java区域应该单独放在一个jar中?