需求:本地aar文件上传到maven库

参考我之前的博客gradle上传本地文件到远程maven库(nexus服务器)

下面是java图形化工具代码

package com.jinkejoy.build_aar;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField; public class UploadAarFile {
private JFrame jFrame;
private JTextField aar_path;
private JButton aarPath_button;
private File aar_File;
private JTextField main_path;
private JButton main_button;
private File main_File;
private JTextField groupId;
private JTextField artifactId;
private JTextField version;
private JButton upload; public static void main(String[] args) {
new UploadAarFile();
} public UploadAarFile() {
openFileWindow();
} private void openFileWindow() {
jFrame = new JFrame();
jFrame.setTitle("将aar上传到maven库");
jFrame.setBounds(500, 500, 700, 160);
jFrame.setVisible(true);
FlowLayout layout = new FlowLayout();
layout.setAlignment(FlowLayout.LEFT);
//选择aar文件
JLabel filePath_label = new JLabel("aar本地路径:");
aar_path = new JTextField(48);
aarPath_button = new JButton("浏览");
//前缀包名
JLabel groupId_label = new JLabel("前缀包名:");
groupId = new JTextField(25);
//aar名
JLabel aar_label = new JLabel("aar文件名:");
artifactId = new JTextField(25);
//版本
JLabel version_label = new JLabel("aar版本号:");
version = new JTextField(25);
//母包
JLabel main_label = new JLabel("母包路径:");
main_path = new JTextField(50);
main_button = new JButton("浏览");
//上传
upload = new JButton("上传");
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setLayout(layout);
jFrame.setResizable(false);
jFrame.add(main_label);
jFrame.add(main_path);
jFrame.add(main_button);
jFrame.add(filePath_label);
jFrame.add(aar_path);
jFrame.add(aarPath_button);
jFrame.add(groupId_label);
jFrame.add(groupId);
jFrame.add(aar_label);
jFrame.add(artifactId);
jFrame.add(version_label);
jFrame.add(version);
jFrame.add(upload);
findAarFile();
findMainFile();
uploadAar();
} private void findMainFile() {
main_button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.showDialog(new JLabel(), "选择");
main_File = chooser.getSelectedFile();
main_path.setText(main_File.getAbsolutePath().toString());
}
});
} private void findAarFile() {
aarPath_button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.showDialog(new JLabel(), "选择");
aar_File = chooser.getSelectedFile();
aar_path.setText(aar_File.getAbsolutePath().toString());
}
});
} private void uploadAar() {
upload.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
uploadAarImpl();
}
});
} private void uploadAarImpl() {
if (checkInput()) return;
cachePath();
gradleUpload();
} private void cachePath() {
String cache = "mainPath=" + main_path.getText().toString().replace("\\", "\\\\") + "\n" +
"aarPath=" + aar_path.getText().toString().replace("\\", "\\\\") + "\n" +
"groupId=" + groupId.getText().toString().replace("\\", "\\\\") + "\n" +
"artifactId=" + artifactId.getText().toString().replace("\\", "\\\\") + "\n" +
"version=" + version.getText().toString().replace("\\", "\\\\");
File cacheFile = new File(main_path.getText().toString() + "/aarParam.properties");
if (!cacheFile.exists()) {
try {
cacheFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fop = new FileOutputStream(cacheFile);
fop.write(cache.getBytes());
fop.flush();
fop.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} private void gradleUpload() {
String command = "cmd /c start gradlew clean uploadArchives";
File cmdPath = new File(main_path.getText().toString());
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec(command, null, cmdPath);
} catch (IOException e) {
e.printStackTrace();
}
} private boolean checkInput() {
if ("".equals(aar_path.getText().toString())) {
JOptionPane.showMessageDialog(jFrame, "请输入aar文件路径");
return true;
}
if ("".equals(main_path.getText().toString())) {
JOptionPane.showMessageDialog(jFrame, "请输入母包路径");
return true;
}
if ("".equals(groupId.getText().toString())) {
JOptionPane.showMessageDialog(jFrame, "请输入前缀包名");
return true;
}
if ("".equals(artifactId.getText().toString())) {
JOptionPane.showMessageDialog(jFrame, "请输入aar名称");
return true;
}
if ("".equals(version.getText().toString())) {
JOptionPane.showMessageDialog(jFrame, "请输入aar版本号");
return true;
}
return false;
}
}

jar包打成可运行程序参考android studio打可执行jar包

效果图

aar上传maven库工具的更多相关文章

  1. unity打成aar上传到maven库的工具

    需求: 把unity打成aar并上传到maven库 其实就是把前两个博客整合了一下 unity打aar包工具 aar上传maven库工具 这里先说eclipse版的 package com.jinke ...

  2. rz和sz上传下载文件工具lrzsz

    ######################### rz和sz上传下载文件工具lrzsz ####################################################### ...

  3. linux上很方便的上传下载文件工具rz和sz

    linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...

  4. Maven配置jar(war)包自动打包上传Maven服务器的配置

    Maven配置jar(war)包自动打包上传Maven服务器的配置 创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionMa ...

  5. 关于新项目上传远程库报错 non-fast-forward

    已有项目上传远程库会报错 non-fast-forward 首先使用命令行 git pull origin master --allow-unrelated-histories 之所以使用这个命令,是 ...

  6. [Linux]非常方便的上传下载文件工具rz和sz

     linux上非常方便的上传下载文件工具rz和sz (本文适合linux入门的朋友) [一般用于SecureCRT ssh中使用] █ 法一:直接用yum安装lrzsz(推荐) yum insta ...

  7. Spring Boot从入门到精通(二)配置GitHub并上传Maven项目

    简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...

  8. 个人开源项目如何上传maven中央仓库

    最近在写一些开源项目,想把自己写的东西放到maven中央仓库,提供给更多的人使用.所以写这一篇文章,记录一下自研开源项目jar包上传同步maven中央仓库成功的整个过程,这其中还是有不少的坑的. 目录 ...

  9. 封装WebAPI客户端,附赠Nuget打包上传VS拓展工具

    一.前言 上篇< WebAPI使用多个xml文件生成帮助文档 >有提到为什么会出现基于多个xml文件生成帮助文档的解决方案,因为定义的模型可能的用处有: 1:单元测试 2:其他项目引用(可 ...

随机推荐

  1. struts2 过滤器和拦截器的区别和使用

    java web 过滤器和拦截器的区别和使用  1.1 什么是拦截器:      拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然 ...

  2. ADO.NET连接字符串大全---各种数据库的连接字符串

    ADO.NET连接字符串大全 ADO.NET连接字符串 名称 ADO.NET连接字符串 说明 ADO.NET连接字符串:SQL Server,SQL Server 2005,ACCESS,Oracle ...

  3. Confluence 6 附件存储选项

    在早期的 Confluence 版本中,我们允许存储附件到 WebDav 或者 Confluence 数据库中.针对新的 Confluence 安装,我们不再支持这 2 种存储了. 本地文件系统 在默 ...

  4. python(8):面向对象编程

    有三种程序类型: (1)面向过程:按照一定的逻辑顺序,一步步垒代码 (2)面向函数:对用常用的计算,建立函数避免重复 (3)面向对象: 函数的集合,对函数进行分类和封装 (一) 抽象 抽象: 哈巴狗, ...

  5. Nginx详解十一:Nginx场景实践篇之Nginx缓存

    浏览器缓存: HTTP协议定义的缓存机制(如:Expires.Cache-control等) 当浏览器第一次请求的时候,浏览器是没有缓存的 第二次请求开始就有缓存了 校验过期机制 配置语法-expir ...

  6. Jmeter中使用外部的java文件

    感觉在Jmeter中使用外部的Java文件比较方便,语法一样,而且可以直接引用,所以个人觉得这个功能还是蛮重要的,特别是在使用Jmeter的过程中,可能需要结合一定的业务场景进行判断等,那使用Jmet ...

  7. Python数据类型之字符串

    一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ...

  8. 用ffmpeg把视频编码格式转为h.264

    command: ffmpeg -i infile.mp4 -an -vcodec libx264 -crf 23 outfile.h264

  9. 静态属性property

    静态属性property(是通过对象去使用) property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 1 . 通过@property修饰过的函数属性,调用的时候无需在加() cla ...

  10. 下载中间件--随机IP代理以及随机User_Agent

    下载中间件随机IP代理以及随机User_Agent 1.在settings.py中设置开启代理功能 # 设置下载中间件 DOWNLOADER_MIDDLEWARES = { # 随机的 User-Ag ...