Ubuntu下Java项目编译与打包步骤
一 准备环境
sudo apt update && sudo apt install openjdk-11-jdkjava -version、javac -versionsudo apt install maven,验证:mvn -vsudo apt install gradle,验证:gradle -vmvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false)。二 使用Maven打包
mvn clean package
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.example.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
java -jar target/xxx.jar。三 使用Gradle打包
./gradlew clean build(或 gradle clean build)
plugins {
id 'java'
id 'application'
}
sourceCompatibility = '11'
mainClassName = 'com.example.App'
repositories { mavenCentral() }
dependencies {
testImplementation 'junit:junit:4.13.2'
}
jar {
manifest { attributes 'Main-Class': mainClassName }
}
task copyDependencies(type: Copy) {
from configurations.runtimeClasspath
into 'build/libs/lib'
}
build.dependsOn copyDependencies
java -jar build/libs/xxx.jar。四 无构建工具与进阶打包
javac -d out src/com/example/*.javaManifest-Version: 1.0
Main-Class: com.example.App
jar cfm my-app.jar MANIFEST.MF -C out .java -jar my-app.jarjpackage --type app-image --input target --name myapp --main-class com.example.App --output outjlink --module-path $JAVA_HOME/jmods:mods --add-modules java.base,java.logging,your.module.name --output custom-jreFROM openjdk:11-jdk-slim AS builder
WORKDIR /app
COPY . .
RUN ./gradlew build
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /app/build/libs/app.jar /app/app.jar
EXPOSE 8080
CMD ["java","-jar","/app/app.jar"]
docker build -t myapp .;docker run -p 8080:8080 myapp。