java 程序如何发布
打包 Java 程序
Java 程序通常通过 JAR(Java Archive)文件打包。使用 jar 命令或构建工具(如 Maven、Gradle)生成可执行的 JAR 文件。确保 MANIFEST.MF 文件中包含主类信息:

Main-Class: com.example.Main
使用 Maven 时,在 pom.xml 中配置 maven-jar-plugin:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
生成可执行文件
对于桌面应用,可使用工具将 JAR 转换为原生可执行文件:
- jpackage(JDK 14+):生成平台特定的安装包(如 Windows 的 MSI、macOS 的 DMG)。
jpackage --input target/ --name MyApp --main-jar app.jar --main-class com.example.Main - Launch4j:将 JAR 包装为 Windows 的 EXE 文件。
- GraalVM Native Image:将 Java 程序编译为原生二进制文件。
发布到仓库或服务器
- Maven 仓库:使用
mvn deploy将库发布到 Nexus 或 Maven Central。 - Web 服务器:将 WAR 文件部署到 Tomcat、Jetty 等服务器:
cp app.war /path/to/tomcat/webapps/ - 云平台:通过 Docker 容器化后部署到 Kubernetes 或云服务(AWS、Azure)。
FROM openjdk:17 COPY target/app.jar /app.jar ENTRYPOINT ["java", "-jar", "/app.jar"]
分发方式
- 直接分发:提供 JAR 文件下载,要求用户安装 JRE。
- 安装包:使用 Inno Setup(Windows)、Packages(macOS)生成安装向导。
- 应用商店:提交到 Mac App Store、Microsoft Store 或 Snapcraft。
- Java Web Start(已弃用):替代方案为自包含的安装包或在线下载器。
版本与依赖管理
- 语义化版本:遵循
MAJOR.MINOR.PATCH规则标记版本。 - 依赖打包:使用
maven-assembly-plugin生成包含依赖的 fat JAR:<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
签名与安全
- 代码签名:使用 jarsigner 对 JAR 签名:
jarsigner -keystore myKeystore.jks app.jar myAlias - TLS/SSL:确保 Web 服务启用 HTTPS,避免敏感信息明文传输。







