Я создал автоматизацию на Java, которая использует Selenium, ChromeDriver и JExcelApi. Чтобы упростить распространение этой автоматизации, я пытаюсь добавить ее на сервер Jenkins (подробности см. В моем предыдущем посте StackOverflow ).
Я настроил проект Freestyle вДженкинс, который использует GitHub для управления исходным кодом. Для настроек среды сборки я выбрал:
Delete workspace before build starts
Наконец, при выборе «Build Now» для этого проекта запускается следующая оболочка:
javac src/GUI.java
java GUI
При сборке программы на Jenkins яЯ получаю множество ошибок. Во-первых, вывод говорит, что мои пакеты не существуют. Кроме того, я получаю различные ошибки «не могу найти символ». Наконец, я получаю ошибки, которые говорят, что локальная переменная не может быть доступна из внутреннего класса. Вот подробный вывод консоли от Jenkins:
+ javac src/GUI.java
src/GUI.java:12: error: package Objects does not exist
import Objects.Product;
^
src/GUI.java:13: error: package Reader does not exist
import Reader.ReadExcel;
^
src/GUI.java:14: error: package Reader does not exist
import Reader.WriteExcel;
^
src/GUI.java:15: error: package co.mitch.selenium.runner does not exist
import co.mitch.selenium.runner.ActiveIQ;
^
src/GUI.java:16: error: package co.mitch.selenium.runner does not exist
import co.mitch.selenium.runner.Ascend;
^
src/GUI.java:17: error: package co.mitch.selenium.runner does not exist
import co.mitch.selenium.runner.LinkedIn;
^
src/GUI.java:18: error: package jxl.read.biff does not exist
import jxl.read.biff.BiffException;
^
src/GUI.java:19: error: package jxl.write does not exist
import jxl.write.WriteException;
^
src/GUI.java:20: error: package jxl.write.biff does not exist
import jxl.write.biff.RowsExceededException;
^
src/GUI.java:395: error: cannot find symbol
public static void performCreateWatchlist() throws BiffException, IOException, InterruptedException {
^
symbol: class BiffException
location: class GUI
src/GUI.java:440: error: cannot find symbol
public static void performGetContactInformation(String username, String password, String path) throws InterruptedException, BiffException, IOException, RowsExceededException, HeadlessException, WriteException {
^
symbol: class BiffException
location: class GUI
src/GUI.java:440: error: cannot find symbol
public static void performGetContactInformation(String username, String password, String path) throws InterruptedException, BiffException, IOException, RowsExceededException, HeadlessException, WriteException {
^
symbol: class RowsExceededException
location: class GUI
src/GUI.java:440: error: cannot find symbol
public static void performGetContactInformation(String username, String password, String path) throws InterruptedException, BiffException, IOException, RowsExceededException, HeadlessException, WriteException {
^
symbol: class WriteException
location: class GUI
src/GUI.java:91: error: local variable menuLabel is accessed from within inner class; needs to be declared final
frame.remove(menuLabel);
^
src/GUI.java:92: error: local variable centerPanel is accessed from within inner class; needs to be declared final
frame.remove(centerPanel);
^
src/GUI.java:103: error: local variable menuLabel is accessed from within inner class; needs to be declared final
frame.remove(menuLabel);
^
src/GUI.java:104: error: local variable centerPanel is accessed from within inner class; needs to be declared final
frame.remove(centerPanel);
^
src/GUI.java:115: error: local variable menuLabel is accessed from within inner class; needs to be declared final
frame.remove(menuLabel);
^
src/GUI.java:116: error: local variable centerPanel is accessed from within inner class; needs to be declared final
frame.remove(centerPanel);
^
src/GUI.java:182: error: local variable usernameField is accessed from within inner class; needs to be declared final
username = usernameField.getText();
^
src/GUI.java:183: error: local variable passwordField is accessed from within inner class; needs to be declared final
password = passwordField.getText();
^
src/GUI.java:184: error: local variable nameField is accessed from within inner class; needs to be declared final
watchlistName = nameField.getText();
^
src/GUI.java:185: error: local variable excelField is accessed from within inner class; needs to be declared final
excelPath = excelField.getText();
^
src/GUI.java:189: error: cannot find symbol
} catch (BiffException | IOException | InterruptedException e2) {
^
symbol: class BiffException
src/GUI.java:252: error: local variable usernameField is accessed from within inner class; needs to be declared final
username = usernameField.getText();
^
src/GUI.java:253: error: local variable passwordField is accessed from within inner class; needs to be declared final
password = passwordField.getText();
^
src/GUI.java:254: error: local variable excelField is accessed from within inner class; needs to be declared final
excelPath = excelField.getText();
^
src/GUI.java:261: error: cannot find symbol
} catch (RowsExceededException e1) {
^
symbol: class RowsExceededException
src/GUI.java:267: error: cannot find symbol
} catch (BiffException e1) {
^
symbol: class BiffException
src/GUI.java:270: error: cannot find symbol
} catch (WriteException e1) {
^
symbol: class WriteException
src/GUI.java:331: error: local variable usernameField is accessed from within inner class; needs to be declared final
performLinkedInHelp(usernameField.getText(), passwordField.getText());
^
src/GUI.java:331: error: local variable passwordField is accessed from within inner class; needs to be declared final
performLinkedInHelp(usernameField.getText(), passwordField.getText());
^
src/GUI.java:396: error: cannot find symbol
ActiveIQ activeIQUser = new ActiveIQ();
^
symbol: class ActiveIQ
location: class GUI
src/GUI.java:396: error: cannot find symbol
ActiveIQ activeIQUser = new ActiveIQ();
^
symbol: class ActiveIQ
location: class GUI
src/GUI.java:399: error: cannot find symbol
ReadExcel excelReader = new ReadExcel(excelPath);
^
symbol: class ReadExcel
location: class GUI
src/GUI.java:399: error: cannot find symbol
ReadExcel excelReader = new ReadExcel(excelPath);
^
symbol: class ReadExcel
location: class GUI
src/GUI.java:446: error: cannot find symbol
ReadExcel excelReader = new ReadExcel(excelPath);
^
symbol: class ReadExcel
location: class GUI
src/GUI.java:446: error: cannot find symbol
ReadExcel excelReader = new ReadExcel(excelPath);
^
symbol: class ReadExcel
location: class GUI
src/GUI.java:450: error: cannot find symbol
Ascend run = new Ascend();
^
symbol: class Ascend
location: class GUI
src/GUI.java:450: error: cannot find symbol
Ascend run = new Ascend();
^
symbol: class Ascend
location: class GUI
src/GUI.java:470: error: cannot find symbol
ArrayList<Product> output = new ArrayList<Product>();
^
symbol: class Product
location: class GUI
src/GUI.java:470: error: cannot find symbol
ArrayList<Product> output = new ArrayList<Product>();
^
symbol: class Product
location: class GUI
src/GUI.java:493: error: cannot find symbol
WriteExcel writer = new WriteExcel();
^
symbol: class WriteExcel
location: class GUI
src/GUI.java:493: error: cannot find symbol
WriteExcel writer = new WriteExcel();
^
symbol: class WriteExcel
location: class GUI
src/GUI.java:509: error: cannot find symbol
LinkedIn run = new LinkedIn();
^
symbol: class LinkedIn
location: class GUI
src/GUI.java:509: error: cannot find symbol
LinkedIn run = new LinkedIn();
^
symbol: class LinkedIn
location: class GUI
Note: src/GUI.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
46 errors
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Из моего исследования я обнаружил, что одним из возможных решений было бы использование проекта Maven. Однако у меня нет опыта работы с Maven, так что это будет сложный процесс. Есть ли другая команда оболочки, которую я должен использовать, чтобы сделать эту сборку и запустить правильно? Я попытался скомпилировать каждый файл исходного кода по отдельности, но это также вернуло ошибки:
javac src/Objects/Product.java
javac src/Reader/ReadExcel.java
javac src/Reader/WriteExcel.java
javac src/co/mitch/selenium/runnuer/ActiveIQ.java
javac src/co/mitch/selenium/runner/Ascend.java
javac src/co/mitch/selenium/running/LinkedIn.java
javac src/GUI.java
java GUI
Если нет способа заставить это работать с другой командой оболочки, какие опции у меня есть, чтобы запустить автоматизациюправильно на сервере? Заранее благодарим за любую помощь, которую вы можете оказать.