 | Практика по Maven 2 - ваш первый проект Maven 2
В первом практическом примере вы увидите, как построить простой проект в Maven 2. Встроенная в Maven 2 база о Java-проектах избавит вас от скучной настройки, которая может быть необходима при использовании других инструментов.
Класс-обработчик числовых операций
Этот пример использует класс, который обрабатывает числовые операции. Исходный код для основного класса
NumOps показан в Листинге 4 :
Листинг 4. Класс NumOps
package com.ibm.devworks;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class NumOps {
private List <Operation> ops = new ArrayList
<Operation>();
public NumOps() {
ops.add( new AddOps());
}
public Operation getOp(int i)
{ Operation retval;
if (i > ops.size())
{ retval = null;
} else {
retval = (Operation) ops.get(i);
} return retval;
}
public int size() {
return ops.size();
}
public static void main( String[] args ) {
NumOps nop = new NumOps();
for (int i=0; i < nop.size(); i++) {
System.out.println( "2 " +
nop.getOp(i).getDesc() +
" 1 is " +
nop.getOp(i).op(2,1) );
}
}
}
|
Класс NumOps управляет набором объектов, ответственных за выполнение числовых операций над двумя целыми числами. Основной метод создает экземпляр NumOps, а затем вызывает каждый из объектов, управляемых NumOps, вызывая его метод getDesc() и метод op() соответственно. Все объекты, управляемые NumOps, реализуют интерфейс Operation, описанный в Operation.java и приведенный в Листинге 5:
Листинг 5. Интерфейс Operation
package com.ibm.devworks;
public interface Operation {
int op(int a, int b);
String getDesc();
}
|
Единственная операция, описанная в этом первом примере - класс AddOps, показанный в Листинге 6:
Листинг 6. Класс AddOps
package com.ibm.devworks;
public class AddOps implements Operation {
public int op(int a, int b) {
return a+b;
}
public String getDesc() {
return "plus";
}
} |
Когда вы выполните класс NumOps, он выведет следующие выходные данные:
Использование Архетипа (Archetype) для создания примитивных проектов
Для создания всего что необходимо для простого Java-проекта, который можно построить, используя Maven, вы можете воспользоваться плагином Archetype, поставляемым со стандартной комплектацией Maven 2. В отличие от плагинов фаз создания, плагин Archetype запускается вне жизненного цикла проекта Maven и используется для создания проектов Maven. Запустите следующую команду (набирайте все в одной строке) из каталога, где вы хотите разместить проект NumOps:
mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes
-DgroupId=com.ibm.devworks -DartifactId=NumOps
|
Команда предоставит плагину Archetype координаты вашего модуля: com.ibm.devworks/NumOps/1.0-SNAPSHOT. В данном случае вам не надо будет указывать версию, поскольку плагин Archetype по умолчанию использует 1.0-SNAPSHOT. Эта команда создает пусковой файл pom.xml для проекта в соответствии с привычной структурой каталогов в Maven 2. Вы найдете код в разделе загрузки кодов этого руководства в папке example1 (см. Загрузка).
Результат должен быть похожим на приведенный в Листинге 7:
Листинг 7. Использование Archetype Maven для создания проекта NumOps
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:create] (aggregator-style)
[INFO] -------------------------------------------------------------------------
---
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus
...
[INFO] [archetype:create]
[INFO] Defaulting package to group ID: com.ibm.devworks
[INFO] -------------------------------------------------------------------------
---
[INFO] Using following parameters for creating Archetype: maven-archetype-quicks
tart:RELEASE
[INFO] -------------------------------------------------------------------------
---
[INFO] Parameter: groupId, Value: com.ibm.devworks
[INFO] Parameter: packageName, Value: com.ibm.devworks
[INFO] Parameter: basedir, Value: C:\temp\maven
[INFO] Parameter: package, Value: com.ibm.devworks
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: artifactId, Value: NumOps
[INFO] ********************* End of debug info from resources from generated POM
***********************
[INFO] Archetype created in dir: C:\temp\maven\NumOps
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sat Dec 02 22:04:02 EST 2006
[INFO] Final Memory: 4M/8M
[INFO] ------------------------------------------------------------------------
|
Плагин Archetype создает дерево каталогов, файл pom.xml file и заполнитель - приложение App.java. Он также создает дерево каталогов для исходного кода тестироввания модулей и заполнитель - тест AppTest.java. Проект готов к запуску. На рисунке 6 показаны каталоги и файлы, созданные плагином Archetype:
Рисунок 6. Каталоги и файлы, созданные плагином Archetype
Все что вам осталось сделать - это переместить файлы NumOps.java, Operation.java и AddOps.java в то место, где находится App.java и удалить App.java. В следующем разделе мы произведем некоторые изменения в созданном файле pom.xml, он удовлетворял нашим требованиям.
|  |