maven部署插件忽略版本号?

maven部署插件忽略版本号?,maven,plugins,jar,Maven,Plugins,Jar,我是Maven的新手,我尝试将我的项目部署为war和jar。我很想分割项目来做同样的事情,但它太大了,简单的我无法在合理的时间内完成 我发现,这建议我添加一些插件 安装插件工作得很好 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <executions>

我是Maven的新手,我尝试将我的项目部署为war和jar。我很想分割项目来做同样的事情,但它太大了,简单的我无法在合理的时间内完成

我发现,这建议我添加一些插件

安装插件工作得很好

<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中?