java - 从 maven 创建 jar 文件

标签 java maven jar

我想创建一个没有 SNAPSHOT 的 jar 文件,因为当我使用这个命令时

mvn -f pom.XML package

创建了两个文件“文件名_SNAPSHOT.jar 和文件名_SNAPSHOT_WITH_dependencies.jar” 我要文件名.jar 我知道我应该在 pom.XML 中进行编辑,所以我尝试添加这个

<plugin>
 <groupId>org.Apache.maven.plugins</groupId>  
   <artifactId>maven-source-plugin</artifactId>         
      <executions> 
       <execution>
        <id>attach-sources</id>
        <goals>
           <goal>jar</goal>
        </goals>
       </execution>
      </executions>
</plugin>

但它创建了文件名_SNAPSHOT_source.jar 我该如何解决它?!

我的 pom.XML 就是这样

<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">
  <model Version>4.0.0</model Version>
    <group Id>MyProject</group Id>
    <artifact Id>MyProject</artifact Id>
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging>

最佳答案

正确的方法是更改​​project.version。但不推荐这样做,因为开发jar应该有后缀为-SNAPSHOT的版本。

Maven goes a long way to help you with version management and you will often see the SNAPSHOT designator in a version, which indicates that a project is in a state of development.

更多信息:

不更改 project.version 的其他解决方案是使用属性 finalName。此解决方案从 Artifact 中删除整个 version

<build>
 <finalName>${project.artifactId}</finalName>
</build>

应用您的 pom.xml 后应该如下所示:

<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>com.example.something</groupId>
  <artifactId>myproject</artifactId>
  <version>0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>My Project<name>
  <build>
     <finalName>${project.artifactId}</finalName>
  </build>
  ...
</project>

属性 finalName 也适用于 Maven Assembly Plugin

另请阅读:

关于java - 从 maven 创建 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108328/

相关文章:

java - Selenium:单击的元素根据启动的实例数而变化

java - 如何使用Java获取操作系统级别信息?

java - Eclipse maven 仅管理依赖项,仅此而已

java - IntelliJ 想法 : Maven compilation warning about supported annotation processor source version 'RELEASE_6' on Java 11

jar - javafx 包 javafx.embed.swt 不在 java8u5 中

java - 使用 Eclipse IDE 在 Java 中设置类路径

java - 下载和合并期间文件损坏

java - 使用 MapReduce 构建 k-d 树?

java - JUnit 类别不适用于 TestCase?

java - Maven:没有要安装的主要 Artifact ,而是安装附加 Artifact