java maven. Как вынести файл ресурса из jar файла
12 Апрель
Что бы сделать файл property или конфиг внешним, а не в jar файле с помощью maven, нужно два действия:
- Указать мавену скопировать файлы из папки ресурсов в нужную папку
В данном примере копируются все файлы из «src/main/resources», кроме файлов с расширением property, в папку сборки приложения
<plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>process-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>*.properties</exclude> </excludes> </resource> </resources> </configuration> </execution> </executions> </plugin>
- Указать мавену исключить нужный файл из ресурсов при сборке
В данном примере все xml файлы из «src/main/resources» не включаются в сборку
<resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>*.xml</exclude> </excludes> <filtering>false</filtering> </resource> </resources>
Java maven. Как добавить внешний файл в POM на примере jpcap
7 Февраль
Если в POM нужно добавить внешний файл, которого нет в репозитории, можно сделать это так:
- Установить файл в репозиторий из командной строки, ниже пример как сделать это для 2-х файлов программы jpcap
C:\> mvn install:install-file -Dfile=C:\jpcap.jar -DgroupId=com.jpcap -DartifactId=jpcap -Dversion=0.6 -Dpackaging=jar C:\> mvn install:install-file -Dfile=C:\jpcap.dll -DgroupId=com.jpcap -DartifactId=jpcap -Dversion=0.6 -Dpackaging=dll
- Создать в проекте папку с названием local-repo и в этой папке создать папку com
- Скопировать папку jpcap из «C:\Users\qaskilluser\.m2\repository\com» в «local-repo\com». Таким образом мы создали локальный репозиторий. Должно получиться примерно вот так:
More >
Java maven. Как подключить Native Library на примере jpcap
6 Февраль
Чтобы подключить к примеру .dll бибилиотеку которую использует .jar файл к maven проекту можно написать два плагина. Первый будет копировать нужный .dll файл в каталог скомпилированого приложения, второй плагин пропишет путь к этой библиотеке в java.library.path переменную. Ниже пример плагинов для для jpcap библиотеки где jpcap.jar использует jpcap.dll. Если дллку не подключить то будет java.lang.UnsatisfiedLinkError: no jnotify in java.library.path
<!-- Copy required dll to project build directory --> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-dependency-plugin</artifactid> <executions> <execution> <id>copy</id> <phase>compile</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactitems> <artifactitem> <groupid>com.jpcap</groupid> <artifactid>jpcap</artifactid> <version>0.6</version> <type>dll</type> <overwrite>true</overwrite> <outputdirectory>${project.build.directory}/lib</outputdirectory> <destfilename>jpcap.dll</destfilename> </artifactitem> </artifactitems> </configuration> </execution> </executions> </plugin>
Selenium WebDriver. Как подключить Modify Header плагин, на примере X-IP header
25 Январь
Что бы протестировать доступ к веб приложению из разных стран с помощью селениума, можно подключить Modify Header плагин и подменять X-IP header в запросе, если приложение его поддерживает. Ниже описано как настроить селениум и плагин:
- Скачать Modify Header плагин отдельно от Firefox и поместить его например в папку src/test/resources;
- Написать java код который подключит и настроит плагин к Firefox пофайлу и запустит браузер с указанными настройками:
public void openFirefoxWithModifyHeader(String ipAddress) throws IOException { logger.info("Initialize Modify Header plugin with IP: " + ipAddress); File file = new File("src/test/resources/modify_headers-0.7.0.2.xpi"); FirefoxProfile profile = new FirefoxProfile(); profile.addExtension(file); profile.setPreference("modifyheaders.config.active", true); profile.setPreference("modifyheaders.config.alwaysOn", true); profile.setPreference("modifyheaders.headers.count", 1); profile.setPreference("modifyheaders.headers.action0", "Add"); profile.setPreference("modifyheaders.headers.name0", "X-IP"); profile.setPreference("modifyheaders.headers.value0", ipAddress); profile.setPreference("modifyheaders.headers.enabled0", true); logger.info("Open Firefox instance"); WebDriver driver = new FirefoxDriver(profile); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); }
Java. Как вернуть значение найденое с Regex
1 Декабрь
Regex в java немного отличается от регекса в .net. Чтобы найти соответствие в строке нужно для матчера сначала выполнить метод mather.find() и только затем можно просматривать, что он нашел и вернуть нужное значение. Но для этого возвращаемое значение нужно выделить в группу с помощью круглых скобок. Ниже пример, который вытаскивает из времени часы и минуты.
public int getMinutesFromTime(String timeFullString) { String REGEX = ":([0-9]+)"; String INPUT = timeFullString; Pattern pattern; Matcher matcher; pattern = Pattern.compile(REGEX); matcher = pattern.matcher(INPUT); if (matcher.find()) return Integer.parseInt(matcher.group(1)); return 0; } public int getHoursFromTime(String timeFullString) { String REGEX = "([0-9]+):"; String INPUT = timeFullString; Pattern pattern; Matcher matcher; pattern = Pattern.compile(REGEX); matcher = pattern.matcher(INPUT); matcher.find(); return Integer.parseInt(matcher.group(1)); }
Java. Как сделать Enum который подставляет строку вместо ключа
1 Декабрь
Если нужно сделать enum из статических значений и подставлять их например в тест использую только ключ и не объявлять всяких switch, if else, можно воспользоваться таким способом
public enum CurrencySymbols { GBP("\u00A3"), USD("\u0024"), EURO("\u20AC"), AUD("AUD"); String currencySymbol; CurrencySymbols(String currencySymbol){ this.currencySymbol = currencySymbol; } public String getCurrencySymbol(){ return this.currencySymbol; } @Override public String toString() { return getCurrencySymbol(); } }
Теперь с этим можно работать вот так:
String s = "The currency is: " + CurrencyUsers.GBP;
Результатом будет
The currency is: £Нагрузочное тестирование мамы
4 Ноябрь
С целью определить какую максимальную нагрузку выдерживает мама :)


Комментарии