Показаны сообщения с ярлыком Maven. Показать все сообщения
Показаны сообщения с ярлыком Maven. Показать все сообщения

среда, 20 сентября 2017 г.

Подключаем Lombok и выкидываем унылые геттеры / сеттеры в Java

Когда мы описываем модель данных в java-классе, это выглядит примерно так:

============================

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

============================

Сначала указали переменную, а потом идут геттеры и сеттеры для нее. Когда переменных много, java-класс раздувает.
Раздутый java-класс

Но если подключить Lombok, то этой проблемы не будет и ровно тот же самый код будет выглядеть так

воскресенье, 10 сентября 2017 г.

Как подключить в maven сторонние библиотеки

Оригинал статьи — http://www.geekality.net/2013/09/16/maven-add-3rd-party-dependencies-in-project-specific-repository/

Если вам нужно подключить в maven-е какие-то свои библиотечки, которых нет в публичном Maven-репозитории, это делается в 3 шага:

1. Создать репозиторий


Нашу библиотечку нужно задеплоить — распаковать lib. Делается это такой командой (она записана в несколько строк только наглядности ради, так то, разумеется, вы пишите ее одной строкой):

mvn deploy:deploy-file
    -Durl=file:///dev/project/repo/
    -Dfile=somelib-1.0.jar
    -DgroupId=com.example
    -DartifactId=somelib
    -Dpackaging=jar
    -Dversion=1.0

groupId и artifactId — вы можете называть сами как хотите. Например, вы можете в качестве artifact id использовать название библиотечки, а в качестве group id — id в главном пакете, используемом в библиотеке.

The group and artifact id you’d have to make up yourself of course. For example pull the artifact id from the library name and the group id from the main package used inside the library.

Не забудьте добавить эту папку в систему контроля версий!

пятница, 8 сентября 2017 г.

Как создать бранч в Mercurial для Maven-проекта

Предполагается использование метода «основной код находится в trunk-ветке, при релизе мы создаем бранч»

Для создания бренча необходимо перейти в локальный репозиторий и выполнить следующие команды:

  1. Обновиться на бренч default
  2. Выполнить создание бренча X (например 1.0)
  3. Зафиксировать создание бренча по номеру задачи релиза
  4. Обновиться на бренч default
  5. Обновить версию проекта на Y (следующая ветка разработки, например 2.0)
  6. Зафиксировать обновление версии
  7. Слить изменения default и созданным бренчем X
  8. Зафиксировать слияние
  9. Зафиксировать изменения в глобальном репозитории


1. hg up default
2. hg branch X
3. hg ci -m "JIRA-N branch X"
4. hg up default
5. mvn release:update-versions -DdevelopmentVersion=Y-SNAPSHOT
6. hg ci -m "JIRA-N update versions"
7. hg merge X
8. hg ci -m "JIRA-N update versions(merge)"
9. hg push --new-branch

Пример

среда, 24 апреля 2013 г.

Как в Maven быстро создать БД по шаблону?

Бывают такие ситуации, когда надо что-то протестировать на предварительно подготовленной БД, потом это все убить, снова подготовить итд итд...

Получаем такую последовательность действий:
  • Создаем БД.
  • Заполняем ее через внешний интерфейс.
  • Выполняем свои тесты.
  • Дропаем все нафик.
  • Снова создаем.
  • Снова заполняем ровно теми же данными, так как нам нужно проверить именно их, но в разных вариантах развития.
  • Выполняем свои тесты
  • ...
Правда, уныло? А, главное, долго!

Когда передо мной встала такая задача, я сначала попробовала ее обойти, написав автотест. Ну а что? Занесла один раз нужное состояние БД в эксельничек и все, доверилась машине. Все-таки, мне стало гораздо спокойнее писать один тест, чем проверять что-то вручную, надежнее оно...

Но иногда бывает так, что в данном случае автотест излишен, и написать сложно, и не стоит оно того... Но! Автотесты ведь при прогоне подготавливают базу данных... А значит, я могу написать тест без ожидаемого результата. Или с любым скопипасченным результатом, который будет неправильным - пусть тест падает, коммитить его не надо, а так хоть БД подготовит, все помощь.

Озвучила мысли разработчику и пошла пилить тест. Но что-то у нас с ним не сложилось... Не создавал БД, хоть ты тресни.

Разработчик посмотрел-посмотрел на мои страдания и сделал утилитку, которая заполняет БД по xls (возможны и другие форматы) без дополнительных танцев с бубнами.

Итак, ребята! Если у Вас установлен Maven, пользуйтесь (как же раздражает это дурацкое форматирование в блоге при вставке текста, но уж извините, как есть...).
  1. Создаем pom.xml
  2. Создаем Start.xls 
Создаем БД!

1. В разделе common configurations заполнить данные по схеме БД, которую будем заполнять


<username>test</username>
<password>test</password>
<schema>test_schema</schema>

2. В разделе specific configurations  в параметре src указать путь к файлу

<src>C:\dbunit_load\Start.xls</src>

3. Запустить утилиту

mvn clean package

Ну вот и все (smile)


Настройка pom.xml

Утилита настроена на работу с oracle-драйвером.
Исходник Pom-а, меняем под свою организацию (себя):
  • groupId - the id of the project's group.
  • description - описание
  • url - строка подключения к БД
  • username - логин
  • password - пароль
  • schema - название схемы
  • src - путь к файлу
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>group</groupId>
    <artifactId>dataset-load</artifactId>
    <version>0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Loader</name>
    <description>TADA!</description>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>dbunit-maven-plugin</artifactId>
        <version>1.0-beta-3</version>
       
        <!--jar file that has the jdbc driver -->
        <dependencies>
          <dependency>
<groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
          </dependency>
                        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.2-FINAL</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        </dependencies>
       
        <!-- common configurations -->
        <configuration>
          <driver>oracle.jdbc.OracleDriver</driver>
          <url>jdbc:oracle:thin:@server:port:sid</url>
          <username>test</username>
          <password> test </password>
             <schema>test_schema </schema>
              <format>xls</format>
              <datatypeWarning>true</datatypeWarning>
            <dataTypeFactoryName>org.dbunit.ext.oracle.Oracle10DataTypeFactory</dataTypeFactoryName>
            <skipOracleRecycleBinTables>true</skipOracleRecycleBinTables>

        </configuration>
       
        <executions>
          <execution>
            <phase>test-compile</phase>
            <goals>
              <goal>operation</goal>
            </goals>
            <!-- specific configurations -->
            <configuration>
              <type>CLEAN_INSERT</type>
              <src>C:\auto_db\Start.xls</src>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>