半成品java增量更新打包编译工具
因为生产代码在迭代更新过程中,对代码的管理不善,使我对现有代码是否与生产一致产生了极大的怀疑,为避免全量更新影响其他业务,我决定写一个通过svn的文件清单来对我自己改动过的代码进行自动提取,编译,打包的工具。
编码前
我不想要做成配置的形式,因此我用稍微学习了下现阶段常用的java客户端编程工具JavaFx。
##界面预览
如图所示,
更新清单:你需要打包的的增量更新。
lib:是本次打包所涉及的jar包。
源码根目录:你要提取的源码。
存储路径:编译提取后的文件。
然后编译。
源码:
Controller:
package sample;
import com.sun.org.apache.xerces.internal.dom.AbortException;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javax.tools.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Controller {
/**/
@FXML
private TextField file_list_path;
@FXML
private TextArea lib_files;
@FXML
private TextField source_path;
@FXML
private TextField target_path;
/*jar 包名*/
private List<String> jarFileNames=new ArrayList<String>();;
/**/
private StringBuffer showJARs=new StringBuffer();;
@FXML
public void borrow_file_list(){
FileChooser fileChooser=new FileChooser();
fileChooser.setTitle("选择文件列表");
File file=fileChooser.showOpenDialog(new Stage());
if(file.exists()){
file_list_path.setText(file.getPath());
}
}
@FXML
public void choose_libs(){
FileChooser fileChooser=new FileChooser();
fileChooser.setTitle("选择jdr包");
List<File> files= fileChooser.showOpenMultipleDialog(new Stage());
for (File file: files) {
if(!file.isDirectory()){
if(jarFileNames.size()==0){
jarFileNames.add(file.getPath());
showJARs.append(file.getPath());
}else{
jarFileNames.add(file.getPath());
showJARs.append("\n").append(file.getPath());
}
}
}
lib_files.setText(showJARs.toString());
}
@FXML
public void borrow_source_path(){
DirectoryChooser directoryChooser=new DirectoryChooser();
directoryChooser.setTitle("选择源目录");
File file=directoryChooser.showDialog(new Stage());
if(file.exists()){
source_path.setText(file.getPath());
}
}
@FXML
public void borrow_target_path(){
DirectoryChooser directoryChooser=new DirectoryChooser();
directoryChooser.setTitle("选择目标目录");
File file=directoryChooser.showDialog(new Stage());
if(file.exists()){
target_path.setText(file.getPath());
}
}
/*打包项目*/
@FXML
public void packageProject(){
String fileListName=file_list_path.getText();
String sourcePath=source_path.getText();
String targetPath=target_path.getText();
if("".equals(fileListName)||"".equals(sourcePath)||"".equals(targetPath)){
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.titleProperty().set("信息");
alert.headerTextProperty().set("文件清单,源文件或目标文件不得为空!");
alert.showAndWa