У меня есть несколько вопросов по поводу программирования в целом:
- Я за все свое обучение программированию пока не понимаю откуда человек знает, какую версию взять той или иной библиотеки. Ну например, подключил я log4j и allure-junit-adaptor и прописал необходимые зависимости. Но возникает конфликт при запуске теста с версией allure 1.4.4, и в логе появляются море ошибок
POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.autoadmin.sl</groupId>
<artifactId>SL_AutoFrame</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SL_Frame</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<aspectj.version>1.8.4</aspectj.version>
<allure.version>1.4.4</allure.version>
</properties>
<profiles>
<profile>
<id>a</id>
<properties>
<login>admin</login>
<password>admin</password>
<include.tests>**/TestKaraoke.java</include.tests>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>BasicTest</id>
<properties>
<include.tests>**/TariffPlan.java</include.tests>
<testcase.groups>com.sl.cat.SlowTest</testcase.groups>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
<argLine>
-javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
</argLine>
<properties>
<property>
<name>listener</name>
<value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
</property>
</properties>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- <plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<webAppSourceDirectory>d:/qwerty/site/allure-maven-plugin</webAppSourceDirectory>
</configuration>
</plugin>-->
</plugins>
</build>
<dependencies>
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-junit-adaptor</artifactId>
<version>${allure.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.7.Final</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
<dependency>
<groupId>de.huxhorn.lilith</groupId>
<artifactId>de.huxhorn.lilith</artifactId>
<version>0.9.44</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>uk.org.lidalia</groupId>
<artifactId>sysout-over-slf4j</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>ru.stqa.selenium</groupId>
<artifactId>webdriver-factory</artifactId>
<version>1.1.43</version>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
</dependencies>
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<resultsPattern>**/allure-results</resultsPattern>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
- И одно дело когда это мой проект и я могу методом проб и ошибок сам определить в чем причина (в чужом коде я путаюсь, поэтому лог не могу так с легкостью разобрать). А что делать когда в чужой компании сталкиваешься с подобными ошибками. Как понять что это именно из-за версии, только по логу? Но тогда как начать понимать с легкостью и читать чужой код?
- Например я использую Eclipse, но люди которые раньше пользовались блокнотом (если вообще писали), как узнавали что он определил все взаимосвязи правильно и у них не возникнет ошибок?
- Сейчас существуют просто море библиотек, как программисты узнают, что сейчас актуально, а что нет. Что пригодится в следующей компании, а что нет?
- В зависимостях у log4j есть куча сторонних groupID, я так понял что это разработчики которые не связаны с данной библиотекой. Тогда почему их используют если можно взять просто официальный log4j?
- Что означают все возможные -classic - core - adapter при выборе зависимости
За целый год я изучил много, но многое остается не понятным и конца изучения в программировании я пока не вижу. Я очень попрошу отвечать подробнее и без шуток, так как эта тема для меня лично очень важна.