Рубрика «maven» - 5

Марсианские орбитальные спутники MAVEN и Mangalyaan передали первые фотографии Марса
Первый снимок, сделанный американским аппаратом MAVEN

Похоже на то, что все системы спутника MAVEN, прибывшего на орбиту Марса всего 4 дня назад, функционируют нормально. Сейчас специалисты NASA опубликовали первые фотографии Марса, сделанные спутником на расстоянии 36 тысяч километров от поверхности Красной планеты.

Фотографии получены инструментом Imaging Ultraviolet Spectrograph (IUVS) (ультрафиолетовый спектрограф) спустя 8 часов по прибытию на орбиту. Сами фотографии отредактированы в графическом редакторе, цвета ненастоящие, выбраны оператором для демонстрации результатов различных режимов съемки.

Читать полностью »

image

Все началась, когда я поменял работу и сходу попал на большой проект. Большой для меня это несколько вендоров, десяток систем, 5-ти ступенчатый релизный цикл, 1000К+ инженеров в разных локациях. Исходники «жили» в нескольких svn репозиториях с большим количеством maven модулей, каждый из которых мог использоваться в одной или нескольких системах. Каждый модуль был подключен в основную систему через бинарную зависимость. В конце релизного цикла необходимо было выпустить новые версии модулей и собранных на их основе систем. Под катом я опишу проблему эффективности этого процесса, с которой я попытался побороться — и что из этого вышло.
Читать полностью »

Космический аппарат Maven успешно прибыл на орбиту Марса

Несколько дней назад публиковалась информация о том, что аппарат Maven должен вскоре прибыть на орбиту Красной Планеты, причем для того, чтобы «зацепиться» за гравитацию Марса, аппарату нужно было совершить достаточно сложную серию маневров. Если бы маневр прошел неудачно, Maven мог просто пройти мимо, в таком случае аппарат стоимостью во многие десятки миллионов долларов (и бесценный для науки) был бы потерян. За 10 месяцев с момента запуска аппарат прошел 442 миллиона километров.

Но все прошло хорошо. В результате 33-минутного маневра, во время которого сжигалось топливо 6 главными двигателями аппарата, скорость была сброшена до нужной. За 33 минуты было сожжено более половины всего имеющегося на борту аппарата топлива. Это позволило аппарату выйти на орбиту Марса без каких-либо проблем.

Читать полностью »

Привет хабр, много было уже на писано на тему liquibase и Maven, но я не смог найти ничего про liquibase-maven-plugin и его настройку, а ведь это очень удобный плагин. Вот я и решил написать о том, как его настроить.

Плагин liquibase-maven-plugin предназначен для управления liquibase из Maven. Вот пример команды mvn liquibase:update, для обновления базы данных.

Для начала предлагаю разобраться с тем, что такое Maven и liquibase.

Использование liquibase плагина для Maven

Мавен — это инструмент для сборки Java проекта: компиляции, создания jar, создания дистрибутива программы, генерации документации. Более подробно о самом Maven можно прочитать в статье Apache Maven — основы

Использование liquibase плагина для Maven

Liquibase — это система управления миграциями базы данных. Для ознакомления с liquiabase так же можно прочитать в статье Управление миграциями БД с Liquibase

После того, как мы разобрались с Maven и liquibase, можно перейти к созданию maven проекта и настройке liquibase плагина.
Читать полностью »

Скажу сразу — в Gradle я совсем новичок.
Пол рабочего дня, вместо того, чтоб писать код содержащий мою семью, я потратил на то, чтоб узнать что в одном месте вместо '+' надо поставить '0.10.1'.
А знаете что я сегодня сделал не так? А ничего. Программма вчера запускалась а сегодня перестала. С абсолютно тем же кодом и тем же конфигом. Ни одного файла не менял.
Смышленый или опытный программист уже догадался что знак "+" — значит что надо загрузить самую последнюю версию библиотеки и загрузилось что то не то. Да это часть проблемы, но не вся. Сама библиотека ничего не портила. Она просто имела зависимость от другой — которая портила.
Да и вообще, что за мода выкладывать не оттестированные библиотеки в общий репозиторий? При Мавене такого не было!
Читать полностью »

Привет, читатели!

Хочу поделиться с вами личным опытом в системном интеграционном тестировании. Наша команда занимается разработкой интеграционного слоя, через который связаны все системы в банке. Задач у нас много, времени не хватает, и вопрос тестирования интеграции всегда откладывался.

Как же происходит тестирование интеграции? Самый короткий ответ — никак, хотя у нас больше сотни систем, которые взаимодействуют через интеграционную шину Oracle Service Bus(OSB). У этого продукта есть инструмент OSB Console, который позволяет послать тестовый запрос и отображает полученный ответ. После того как разработчик реализует на шине новый сервис, сервис вручную проверяется через OSB Console. Если проверка успешна, то сервис объявляется работающим и меняется, только если на него начинают жаловаться разработчики внешних систем.

Поддержка используемой нами OSB подходила к концу, и возникла необходимость перехода на новую версию. Хотя сама миграция больших проблем не вызывала, встал вопрос, а как проверить работоспособность смигрированного решения? И тут наша команда в очередной раз задумалась о внедрении автоматического тестирования.
Читать полностью »

За 10 лет разработки веб-приложений с использованием технологий Java я успел повидать огромное число коллег-программистов и познакомиться с их методами организации рабочего процесса. И, к моему удивлению, абсолютное меньшинство когда-либо задумывалось над использованием RAM-диска для сборки проектов. Я думаю, что такая элементарная оптимизация просто не приходит в голову, постоянно занятую текущими задачами, дедлайнами и просто жизненными проблемами.

  • Значительное увеличение скорости сборки за счет отсутствия операций ввода-вывода на жесткий диск
  • Увеличение времени жизни вашего SSD за счет перемещения интенсивных операций записи в память

Если учесть, что в последние годы сильно вырос объем оперативной памяти на компьютере среднестатистического разработчика и повсеместно начинают применяться SSD, то аргументов «против» практически не остается.

Главная цель этой небольшой статьи — вызвать мысль: «А ведь действительно! И как я раньше об этом не подумал?».

Я опишу пример реализации такого подхода в Linux. Действия в других операционных системах будут практически идентичными, за исключением методов создания самого RAM-диска.

Читать полностью »

Есть у меня на некоторых maven-проектах профиль, с помощью которого производится копирование shared-библиотек с последующим перезапуском сервера Tomcat.

Maven profile

<profile>
	<id>deploy-deps</id>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<useSubDirectoryPerScope>true</useSubDirectoryPerScope>
							<excludeGroupIds>исключаем некоторые группы, попадающие в war-архив</excludeGroupIds>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>05-stop-tomcat</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-ssh</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>${putty.key}</argument>
								<argument>${ssh.user}@${ssh.host}</argument>
								<argument>${tomcat.dir.root}/bin/shutdown.sh</argument>
							</arguments>
							<executable>plink</executable>
						</configuration>
					</execution>
					<execution>
						<id>10-clean-shared-jars</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-ssh</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>${putty.key}</argument>
								<argument>${ssh.user}@${ssh.host}</argument>
								<argument>rm</argument>
								<argument>-Rf</argument>
								<argument>${tomcat.dir.shared}/*.jar</argument>
							</arguments>
							<executable>plink</executable>
						</configuration>
					</execution>
					<execution>
						<id>15-upload-shared-jars</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-scp</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>${putty.key}</argument>
								<argument>${project.build.directory}/dependency/compile/*.jar</argument>
								<argument>${ssh.user}@${ssh.host}:${tomcat.lib.shared}/</argument>
							</arguments>
							<executable>pscp</executable>
						</configuration>
					</execution>
					<execution>
						<id>20-start-tomcat</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-ssh</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>"${putty.key}"</argument>
								<argument>${ssh.user}@${ssh.host}</argument>
								<argument>bin/startup.sh</argument>
							</arguments>
							<executable>plink</executable>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</profile>

отходя в сторону, поведаю для чего сей профиль

В части проектов используется связка Nginx+Tomcat. Для данной связки реализовано следующее:

  1. Для всего статичного контента используется некий каталог за пределами webapps. В этот каталог «смотрит» Nginx и отдаёт по web-пути "/static/*"
  2. Все shared java-библиотеки (редко изменяемые) грузятся в каталог ${catalina.home}/shared, и в Tomcat в файле conf/catalina.properties настроена для этого переменная «shared.loader»
  3. Для каждого инстанса Tomcat создан свой системный пользователь
  4. Для доступа по SSH используются ключи и у каждого разработчика он свой

Соответственно, загрузка статичного контента и shared-библиотек это отдельные профили. Всё остальное собирается в war-архив и устанавливается через стандартный web-manager Tomcat-а.
А чтобы не плодить конфигураций, используется PAgent, в который уже и добавленые нужные нам private keys. Они же используются для подключения через Putty

Лежит себе профиль в pom.xml, не кусается вроде бы, даже пашет потихоньку на благо программера, но вот только есть в нём пара «минусов» — занимает много места при развёрнутом pom.xml да ещё и в новые проекты приходится вставлять.
И если от второго минуса можно избавиться написав шаблон в любимая_IDE или свой архетип наваять, то от первого минуса не так-то просто избавить.

Точно ли не так просто? может «обернём» этот профиль в виде плагина для Maven? Сказано, сделано.
Читать полностью »

JavaFX и Spring. Вместе веселей

В данной статье я хочу рассказать о своем опыте интеграции таких вещей как JavaFX и Spring. И заодно использовать базу данных Derby и Maven для сборки приложения.

Введение

JavaFX выглядит довольно удобной и привлекательной технологией для реализации десктопных решений на платформе Java. Начиная с версии Java SE 7 Update 6, JavaFX является частью реализации Oracle Java SE, т.е. никаких дополнительных установок на стороне пользователя не требуется.

Spring со своей стороны, дает удобные фишечки в виде IoC, управление транзакциями и т.д., которые не хочется реализовывать самому.

Читать полностью »

NASA провела успешный запуск спутника по изучению атмосферы Марса

Да, как-то тихо прошел запуск спутника MAVEN (Mars Atmosphere and Volatile EvolutioN), цель которого — изучение атмосферы Марса. Срок миссии — год. За этот год орбитальный аппарат должен будет не просто изучать текущее состояние атмосферы Марса, а и помогать ученым заглянуть в прошлое, для понимания того, что собой представляла атмосфера Марса в прошлом.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js