需求:本地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. AMD-requireJS

    require.js是AMD的一种实现形式. 加载: <script src="require.js" data-main="main"></ ...

  2. 10分钟了解Android的Handler机制

    Handler机制是Android中相当经典的异步消息机制,在Android发展的历史长河中扮演着很重要的角色,无论是我们直接面对的应用层还是FrameWork层,使用的场景还是相当的多.分析源码一探 ...

  3. 关于 IOS 时间的一下用法

    1. 加减月份 -(NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(int)month {     NSDateComp ...

  4. 《MySQL5.7从入门到精通(视频教学版)》

    · 一:书籍PDF获取途径 pdf 文档 在 此QQ群(668345923) 的群文件里面 学习视频资源 二:书籍介绍 本书主要包括MySQL的安装与配置.数据库的创建.数据表的创建.数据类型和运算符 ...

  5. jquery 获取和设置 select下拉框的值

    获取Select : 获取select 选中的 text : $("#ddlRegType").find("option:selected").text(); ...

  6. SpringBoot集成多数据源

    多数据源就是连接多个数据库 1.在application.properties中配置两个数据库 spring.datasource.driverClassName=com.mysql.jdbc.Dri ...

  7. SpringMVC类型转换,验证

    点击上一章-SpringMVC视图及REST风格 Spring mvc 数据绑定流程: SpringMvc将ServletRequest对象及目标方法的形参实例传给WebDataBinderFacto ...

  8. hiho1460 rmq模板题

    好久没做rmq的题了,今天写了一遍,感觉打表有点像区间dp /* 给定长为n的字符串,要求在字符串中选择k个字符, 选择的子系列字典序最小 因为选择k个字符,那么就是去掉n-k个字符 那么[1,n-k ...

  9. python+selenium十四:xpath和contains模糊匹配

    xpath可以以标签定位,也可以@任意属性: 如:以input标签定位:driver.find_element_by_xpath("//input[@id='kw']") 如:@t ...

  10. 谷歌、火狐浏览器 缩放为80% 时,margin值才正确

    声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...