Maven上传包的两种方法

本文详细介绍了一种在Android开发中实现应用自动化打包与上传至Maven仓库的方法。包括Gradle配置、Maven仓库地址设置及权限认证等关键步骤,并对比了自动打包+上传与单独上传的不同场景。

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

自动打包+上传

此方式包含打包+上传两种功能,是自动集成一体的,不能单独拆分。

 

1、在library工程的build.gradle里面,添加如下代码:

apply from: 'maven_upload.gradle'

2、在library工程下面新建gradle.properties(如果没有的话),添加如下代码:

#######################Maven上传参数############################
MAVEN_VERSION=0.0.1-SNAPSHOT
MAVEN_GROUP_ID=your group id
MAVEN_ARTIFACT_ID=your artifact id
MAVEN_PACKAGING=aar
MAVEN_DESCRIPTION=your description
 
MAVEN_RELEASE_URL=http://your maven ip and port/repository/maven-releases/
MAVEN_SNAPSHOT_URL=http://your maven ip and port/repository/maven-snapshots/
 
MAVEN_NAME=your maven name
MAVEN_PASSWORD=your maven password

注:

(1) Could not find metadata your group id:your artifact id/maven-metadata.xml in remote (http://your maven ip and port/repository/maven-releases/)

如果有这样的提示,可以暂时不予理会。

(2) MAVEN_VERSION:如果是SNAPSHOT版本,需要在版本号后面添加"-SNAPSHOT"。

MAVEN_RELEASE_URL和MAVEN_SNAPSHOT_URL分别指向maven的release服务器和maven的snapshot服务器。
MAVEN_GROUP_ID和MAVEN_ARTIFACT_ID根据项目实际情况来设定。

 

3、在library工程下面新建maven_upload.gradle文件,内容如下:

apply plugin: 'maven'
apply plugin: 'signing'
 
configurations {
    deployerJars
}
 
repositories {
    mavenCentral()
}
 
// 判断版本是Release or Snapshots
def isReleaseBuild() {
    return !MAVEN_VERSION.contains("SNAPSHOT");
}
 
// 获取仓库url
def getRepositoryUrl() {
    return isReleaseBuild() ? MAVEN_RELEASE_URL : MAVEN_SNAPSHOT_URL;
}
 
uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment {
                MavenDeployment deployment -> signing.signPom(deployment)
            }
 
            pom.project {
                version MAVEN_VERSION
                groupId MAVEN_GROUP_ID
                artifactId MAVEN_ARTIFACT_ID
                packaging MAVEN_PACKAGING
                description MAVEN_DESCRIPTION
            }
 
            repository(url: getRepositoryUrl()) {
                authentication(userName: MAVEN_NAME, password: MAVEN_PASSWORD) // maven授权信息
            }
        }
    }
}
 
// 进行数字签名
signing {
    // 当 发布版本 & 存在"uploadArchives"任务时,才执行
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

注:

(1) 上传到maven的RELEASE服务器按理来说需要用到签名机制,android studio自带的签名是gpg机制;

然而这个涉及到需要将公钥上传到maven服务器的事宜。

(2)组件上传的时候,注意要根据Build Variants的设置,只生成一个aar或jar文件,不要生成多个,比如带有debug或release标记的版本。切记!

单独上传

此方式包含只包含上传功能,即手动上传指定压缩包。
 

1、安装Maven客户端

具体安装方法不赘述,自行参考文章指引;

2、配置 maven上传脚本

在conf/settings.xml文件里,编辑上服务器的账号、密码信息,另外还有一个id,对应上传脚本中的-DrepositoryId字段。

示例:

 

<server>
<id>nexus-snapshots</id>
<username>账号</username>
<password>密码</password>
</server>

2、利用maven命令,上传指定文件

命令参考格式:

mvn deploy:deploy-file -e -Dfile=F:\a.aar -DgroupId=your group id -DartifactId=your artifact id -Dversion=0.0.1-SNAPSHOT -Durl=http://xxx/maven-snapshots/ -Dpackaging=aar -DrepositoryId=nexus-snapshots

 

单独上传有一个好处就是可以只上传现有的jar包或者aar包,无需工程及时编译重新打包。

有时候这个包是第三方提供的,如果可以通过maven管理起来。

<think>我们正在处理一个SpringBootMaven项目的打和部署到宝塔面板的问题。根据引用内容,我们可以整理出以下步骤:1.**打项目**:使用Maven插件(如`spring-boot-maven-plugin`)将项目打成可执行的JAR文件。此外,引用[4]提到了使用`maven-assembly-plugin`进行自定义打,但通常SpringBoot项目使用`spring-boot-maven-plugin`即可生成含所有依赖的FatJAR。2.**上传到服务器**:将生成的JAR文件上传到宝塔面板的服务器上。宝塔面板通常通过Web界面提供文件上传功能,也可以通过FTP/SFTP等方式。3.**部署**:在宝塔面板中,我们可以使用Java项目管理器(如果安装了的话)来部署SpringBoot应用,或者通过SSH手动运行JAR文件。具体步骤:###1.打SpringBoot项目在项目的`pom.xml`中,确保已经配置了`spring-boot-maven-plugin`插件。引用[1]和[4]都提到了这个插件。配置示例如下:```xml<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>```然后在项目根目录下执行Maven命令:```bashmvncleanpackage```打后,在`target`目录下会生成一个可执行的JAR文件(通常命名为`项目名-版本号.jar`)。###2.上传JAR文件到服务器登录宝塔面板,进入文件管理,将生成的JAR文件上传到服务器上的目标目录(例如`/www/wwwroot/your_project`)。也可以通过FTP工具上传。###3.在宝塔面板中部署有两种主要方式:####方式一:使用Java项目管理器(推荐)1.在宝塔面板的软件商店中搜索并安装“Java项目管理器”。2.安装完成后,打开Java项目管理器,点击“添加项目”。3.填写项目信息:-项目路径:选择上传的JAR文件所在的目录。-项目JAR文件:选择上传的JAR文件。-JDK版本:选择服务器上安装的JDK版本(需要提前安装)。-端口:填写SpringBoot应用启动的端口(默认为8080,确保该端口在服务器防火墙和宝塔面板的安全组中已开放)。-其他选项:根据需要填写,如Xms(初始堆内存大小)、Xmx(最大堆内存大小)等。4.点击“添加”,然后可以在项目列表中看到添加的项目,点击“启动”即可。####方式二:手动通过SSH部署1.通过SSH登录到服务器。2.进入JAR文件所在目录。3.使用`nohup`命令后台运行JAR文件:```bashnohupjava-jaryour_project.jar--server.port=8080>app.log2>&1&```这里将应用日志输出到`app.log`文件,并指定端口为8080(按需修改)。4.为了确保应用在服务器重启后能自动启动,可以配置一个systemd服务(适用于Linux系统)。###注意事项-**端口冲突**:确保应用启动的端口没有被其他进程占用。-**防火墙**:在宝塔面板的安全组和服务器防火墙中开放应用端口。-**数据库配置**:如果应用需要连接数据库,确保服务器上的数据库服务已启动,并且应用的配置文件(如`application.properties`或`application.yml`)中的数据库连接信息正确。###引用说明在打步骤中,我们参考了引用[1]和[4]中关于`spring-boot-maven-plugin`插件的使用。在部署步骤中,我们结合了宝塔面板的常规操作方式。§§相关问题§§1.如何配置SpringBoot应用的端口号?2.如何在宝塔面板中安装和管理JDK?3.如何为SpringBoot应用配置HTTPS?</think>### Spring Boot Maven项目打与宝塔面板部署指南 #### 一、项目打配置 在`pom.xml`中配置打插件(参考引用[1][4]): ```xml <build> <plugins> <!-- Spring Boot打插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- 可选:自定义打配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptor>src/assembly/package.xml</descriptor> </configuration> </plugin> </plugins> </build> ``` #### 二、打操作步骤 1. **执行打命令**: ```bash mvn clean package -DskipTests ``` - 生成位置:`target/*.jar`(可执行JAR) - 多模块项目需在父级目录执行(参考引用[2][3]) 2. **验证打结果**: ```bash java -jar target/your-app-1.0.0.jar ``` #### 三、宝塔面板部署流程 1. **上传文件**: - 将生成的JAR文件(如`your-app-1.0.0.jar`)上传至服务器目录,例如`/www/wwwroot/app` 2. **配置Java环境**: ```bash # 宝塔面板→软件商店→安装Java项目管理器 # 选择JDK版本(推荐JDK11+) ``` 3. **创建启动脚本**: 新建`start.sh`: ```bash #!/bin/bash nohup java -jar /www/wwwroot/app/your-app-1.0.0.jar \ --server.port=8080 \ > /www/wwwroot/app/app.log 2>&1 & ``` 赋予执行权限: ```bash chmod +x start.sh ``` 4. **配置守护进程**: - 宝塔面板→软件商店→Java项目管理器→添加项目 - 设置参数: ``` 项目路径:/www/wwwroot/app JAR文件:your-app-1.0.0.jar 端口:8080 XMS/XMX:根据服务器内存调整(如512M/1024M) ``` #### 四、高级配置建议 1. **Nginx反向代理**(推荐): ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; } } ``` 2. **HTTPS支持**: - 宝塔面板→SSL→申请Let's Encrypt证书 - 在Nginx配置中启用HTTPS重定向 3. **自动部署脚本**(可选): ```bash #!/bin/bash scp target/*.jar user@server:/www/wwwroot/app/ ssh user@server "cd /www/wwwroot/app && ./restart.sh" ``` #### 五、验证部署 1. 访问`http://服务器IP:8080/actuator/health` 2. 检查日志:`tail -f /www/wwwroot/app/app.log` 3. 宝塔面板实时监控CPU/内存使用 > **注意事项**: > 1. 确保服务器安全组开放应用端口(8080)和SSH端口 > 2. 多模块项目需先安装依赖模块到本地仓库(`mvn install`) > 3. 生产环境推荐使用`-Dspring.profiles.active=prod`激活生产配置 [^1]: SpringBoot Maven项目插件继承机制 [^2]: 多模块项目父POM配置规范 [^3]: Spring Boot入口类注解配置 [^4]: 自定义打插件集成方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值