aar上传maven库工具
需求:本地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库工具的更多相关文章
- unity打成aar上传到maven库的工具
需求: 把unity打成aar并上传到maven库 其实就是把前两个博客整合了一下 unity打aar包工具 aar上传maven库工具 这里先说eclipse版的 package com.jinke ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- Maven配置jar(war)包自动打包上传Maven服务器的配置
Maven配置jar(war)包自动打包上传Maven服务器的配置 创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionMa ...
- 关于新项目上传远程库报错 non-fast-forward
已有项目上传远程库会报错 non-fast-forward 首先使用命令行 git pull origin master --allow-unrelated-histories 之所以使用这个命令,是 ...
- [Linux]非常方便的上传下载文件工具rz和sz
linux上非常方便的上传下载文件工具rz和sz (本文适合linux入门的朋友) [一般用于SecureCRT ssh中使用] █ 法一:直接用yum安装lrzsz(推荐) yum insta ...
- Spring Boot从入门到精通(二)配置GitHub并上传Maven项目
简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...
- 个人开源项目如何上传maven中央仓库
最近在写一些开源项目,想把自己写的东西放到maven中央仓库,提供给更多的人使用.所以写这一篇文章,记录一下自研开源项目jar包上传同步maven中央仓库成功的整个过程,这其中还是有不少的坑的. 目录 ...
- 封装WebAPI客户端,附赠Nuget打包上传VS拓展工具
一.前言 上篇< WebAPI使用多个xml文件生成帮助文档 >有提到为什么会出现基于多个xml文件生成帮助文档的解决方案,因为定义的模型可能的用处有: 1:单元测试 2:其他项目引用(可 ...
随机推荐
- RianbowDesign
换了很多个名字,最后换成这个. 主要考虑把自己所学的.所经历的都结合到一起,用这种方式来保持热情. 算是一个设计网站,管理咨询,游戏设计,平面logo之类,想最多地攘括到里边.就像自己不确定的主业一样 ...
- Java感情
不知道怎么会执着于这一门语言.论速度的话,c那系更好一些,而且对底层的操控更多是c那边的.还是想通过Java做这些事. 对Java不怎么懂,它的底层实现是怎样的.只知道一个大体的思想,不知道具体步骤. ...
- Confluence 6 针对大数据量备份
XML 站点备份的方式只针对 Confluence 包含有几千页面的情况,XML 备份所需要的时间随着数据量的变化而增加.另外的一个问题是 XML 站点的备份将会包含上 G 的附件数据,随着数据量的增 ...
- Confluence 6 Oracle 测试你的数据库连接
在你的数据库设置界面,有一个 测试连接(Test connection)按钮可以检查: Confluence 可以连接你的数据库服务器 数据库的字符集编码是否正确 你的数据库用户是否具有需要的权限 你 ...
- flask 面试题
1,什么是Flask,有什么优点?概念解释Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序.这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里 ...
- python面试30-40题
1.简述python引用计数机制 python垃圾回收主要以引用计数为主,标记-清除和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题. 引用计数算法 当有1个变量保存了对 ...
- http超文本协议
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
- 进入页面,根据后台传过来的flag 判断列表隐藏与否
需求描述:页面中有两个列表,一个已添加,一个可以添加,进入页面的时候,如果已添加中有数据则显示,没有数据就隐藏,emmmm,这种需求,我该怎么吐槽嗷嗷嗷 解决思路:让已添加的列表的div默认隐藏,前台 ...
- Python 读写excel类
#-*- coding: utf8 -*- import xlrd import xlwt from Public import GlobalClass def openexcel(path): tr ...
- 步步為營-96-MyMVC2
說明:地址欄中的URL還存在一些不足之處 地址欄中最好能是http"www.sss.com/asdf/aaa 1.1 模擬路由的原理:創建Routing文件夾,并添加URLRoutingMo ...