需求:本地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. vue----less引用

    1.安装less. npm install less less-loader --save-dev 2.修改webpack.config.js { test: /\.less$/, use:[ 'st ...

  2. Confluence 6 导入模板的定义

    模板是一个预先定义的页面,这个预先定义的页面可以在创建新页面的时候预先载入.模板能够给一个页面统一的样式或格式. 你可以在 Confluence 中创建你自己的模板,请查看页面 Create a Te ...

  3. 【Linux】基本命令操作

    一.用户操作 1.新增用户 useradd -u 1101 -g zte -d /home/xhs -m xhs --其中,1101,为用户ID,尽量使用500以上的 zte,为用户组 /home/x ...

  4. nginx安装目录详解(针对centos)

  5. easyUI详解

    1.EasyUI 是前端框架,封装大量 css和封装大量 JS 2.使用前端框架时,给标签定义class 属性,就会有样式和脚本功能了 3.data-options 属性是定义 easyui 属性的, ...

  6. css中border画三角形

    <!doctype html><html lang="en"> <head>  <meta charset="UTF-8&quo ...

  7. tensorflow(2):神经网络优化(loss,learning_rate)

    案例: 预测酸奶的日销量, 由此可以准备产量, 使得损失小(利润大),假设销量是y , 影响销量的有两个因素x1, x2, 需要预先采集数据,每日的x1,x2和销量y_, 拟造数据集X,Y_, 假设y ...

  8. inline namespace

    无意中看到C++11中的新特性inline namespace, 先附上官方的解释 Inline namespace The inline namespace mechanism is intende ...

  9. Python杂写1

    一:编程及编程语言介绍 编程的目的:人把自己的思想流程表达出来,让计算机按照这种思想去做事,把人给解放出来. 编程语言:简单的说就是一种语言,是人和计算机沟通的语言. 编程:例如Python,利用Py ...

  10. 51 Nod 1079 中国剩余定理(孙子定理)NOTE:互质情况

    1079 中国剩余定理 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. 收起 ...