Maven вопрос очистки - PullRequest
       13

Maven вопрос очистки

1 голос
/ 12 декабря 2010

Я пытался построить проект.Это не удалось.Я сделал правильные изменения и попытался построить его снова.Я устраняю следующую ошибку:

Embedded error: Directory simple already exists - please run from a clean directory


dan@dan-netbook:~/Documents/Maven/mavenbook-examples-1-SNAPSHOT/ch03-simple$ mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook -e
+ Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] Reactor build order: 
[INFO]   Chapter 3 Parent Project
[INFO]   Chapter 3 Simple Project Example
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Chapter 3 Parent Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [archetype:create {execution: default-cli}]
[WARNING] This goal is deprecated. Please use mvn archetype:generate instead
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: org.sonatype.mavenbook.ch03
[INFO] Parameter: packageName, Value: org.sonatype.mavenbook
[INFO] Parameter: package, Value: org.sonatype.mavenbook
[INFO] Parameter: artifactId, Value: simple
[INFO] Parameter: basedir, Value: /home/dan/Documents/Maven/mavenbook-examples-1-SNAPSHOT/ch03-simple
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error creating from archetype

Embedded error: Directory simple already exists - please run from a clean directory
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Error creating from archetype
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating from archetype
    at org.apache.maven.archetype.mojos.MavenArchetypeMojo.execute(MavenArchetypeMojo.java:243)
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
    ... 17 more
Caused by: org.apache.maven.archetype.old.ArchetypeTemplateProcessingException: Directory simple already exists - please run from a clean directory
    at org.apache.maven.archetype.old.DefaultOldArchetype.createArchetype(DefaultOldArchetype.java:251)
    at org.apache.maven.archetype.old.DefaultOldArchetype.createArchetype(DefaultOldArchetype.java:117)
    at org.apache.maven.archetype.mojos.MavenArchetypeMojo.execute(MavenArchetypeMojo.java:227)
    ... 19 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 seconds
[INFO] Finished at: Sun Dec 12 18:53:08 EST 2010
[INFO] Final Memory: 10M/26M
[INFO] ------------------------------------------------------------------------

Это заставляет меня поверить, что мне нужно почистить каталог или что-то в этом роде.Я звоню mvn clean, но это не решает проблему.Я уверен, что это очень простой вопрос, но я только учусь.Есть предложения?

Родитель:

<code><pre>
    <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>
  <artifactId>examples</artifactId>
  <groupId>org.sonatype.mavenbook</groupId>
  <version>1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Maven: The Definitive Guide Example Code</name>
  <description>Example Code for Maven: The Definitive Guide</description>

  <url>http://sonatype.com/book</url>

  <modules>
    <module>ch03-simple</module>
    <module>ch04-custom</module>
    <module>ch05-simple-web</module>
    <module>ch06-multi</module>
    <module>ch07-multi-spring</module>
    <module>ch08-optimize</module>
    <module>ch09-pom</module>
    <module>ch10-lifecycle</module>
    <module>ch11-profile</module>
    <module>ch12-assembly</module>
    <module>ch13-properties</module>
    <module>ch15-sitegen</module>
    <module>ch17-writing-plugins</module>
    <module>ch18-alternate-plugins</module>
  </modules>

  <build>
    <finalName>mavenbook-examples-${project.version}</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>project</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>examples</id>
            <phase>package</phase>
            <goals>
              <goal>attached</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
      <profile>
        <id>publish</id>
        <distributionManagement>
        <site>
          <id>sonatype-site</id>
          <name>Sonatype Book Examples</name>
          <url>file:///var/www/domains/sonatype.com/www/htdocs/book/book-examples/</url>
        </site>
        </distributionManagement>
        <properties>
           <sonatype.site>file:///var/www/domains/sonatype.com/www/htdocs/</sonatype.site>
        </properties>
      </profile>
      <profile>
        <id>stage</id>
        <distributionManagement>
        <site>
          <id>sonatype-site</id>
          <name>Sonatype Book Examples</name>
          <url>file:///var/www/domains/sonatype.com/www/htdocs/book-stage/book-examples/</url>
        </site>
        </distributionManagement>
      </profile>
  </profiles>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.0.1</version>
      </plugin>
    </plugins>
  </reporting>

  <repositories>
    <repository>
      <id>sonatype-forge</id>
      <name>Sonatype Forge</name>
      <url>http://repository.sonatype.org/content/groups/public</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
        <repository>
          <id>Codehaus Snapshots</id>
          <url>http://snapshots.repository.codehaus.org</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <releases>
            <enabled>false</enabled>
          </releases>
        </repository>
    <repository>
      <id>Central</id>
      <url>http://repo1.maven.org/maven2</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
  </repositories>

</project>

Другие пом

<code><pre>
<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>
  <parent>
    <groupId>org.sonatype.mavenbook</groupId>
    <artifactId>examples</artifactId>
    <version>1-SNAPSHOT</version>
  </parent>
  <groupId>org.sonatype.mavenbook.ch03</groupId>
  <artifactId>parent</artifactId>
  <packaging>pom</packaging>
  <name>Chapter 3 Parent Project</name>
  <url>http://sonatype.com/book</url>
  <modules>
    <module>simple</module>
  </modules>
</project>

Спасибо

Ответы [ 2 ]

3 голосов
/ 07 января 2012

на всякий случай, если кто-нибудь еще столкнется с этой проблемой ... Я столкнулся с той же проблемой (только сейчас изучаю maven), и вот что сработало для меня:

если вы скачали код, не запускайтекоманда из каталога примеров главы, например / home / uruser / maven / mavenbook-examples-1-SNAPSHOT / ch03-simple

Просто установите новый каталог, например / home / uruser / maven / myTestChapterThree, а затем запуститеследующее:

mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook -e

новичок, чтобы быть уверенным, но по крайней мере три maven нубов (включая меня) попали в эту стену, так что это может быть book советует загрузить примеры глав и затем запустить эту команду, которая может быть проблемой:)

0 голосов
/ 13 декабря 2010

В вашем Приложении я запутался с ArtifactId, так как, я вижу, вы дали как "example", где, когда вы передаете свой аргумент как "simple". Вот простой пример создания нового артефакта.

1. Создайте новый проект и pom.xml для артефакта архетипа

Пример pom.xml для артефакта архетипа выглядит следующим образом:

<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>my.groupId</groupId>
  <artifactId>my-archetype-id</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
</project>

Все, что вам нужно указать, это groupId, artifactId и version. Эти три параметра понадобятся позже для вызова архетипа через архетип: создание из командной строки.

2. Создать дескриптор архетипа

Дескриптор архетипа - это файл с именем archetype.xml, который должен находиться в каталоге src / main / resources / META-INF / maven /. Пример дескриптора архетипа можно найти в быстродействующем архетипе:

<archetype 
  xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org
     /plugins/maven-archetype-plugin/archetype/1.0.0 
  http://maven.apache.org/xsd/archetype-1.0.0.xsd">
  <id>quickstart</id>
  <sources>
    <source>src/main/java/App.java</source>
  </sources>
  <testSources>
    <source>src/test/java/AppTest.java</source>
  </testSources>
</archetype>

Тег должен совпадать с artifactId в архетипе pom.xml.

Необязательный тег true позволяет запускать архетип: создавать даже на существующих проектах.

Теги,,, и представляют различные разделы проекта:

<sources> = src/main/java
<resources> = src/main/resources
<testSources> = src/test/java
<testResources> = src/test/resources
<siteResources> = src/site
<sources> and <testSources> can contain <source> 
  elements that specify a source file.

и может содержать элементы, которые определяют файл ресурса.

Поместите другие ресурсы, например, в каталог src / main / webapp внутри тега.

На данный момент можно указывать только отдельные файлы для создания, но не пустые каталоги.

Таким образом, архетип быстрого запуска, показанный выше, определяет следующую структуру каталогов:

archetype
|-- pom.xml
`-- src
    `-- main
        `-- resources
            |-- META-INF
            |   `-- maven
            |       `--archetype.xml
            `-- archetype-resources
                |-- pom.xml
                `-- src
                    |-- main
                    |   `-- java
                    |       `-- App.java
                    `-- test
                        `-- java
                            `-- AppTest.java

3. Создайте файлы прототипа и прототип pom.xml

Следующим компонентом создаваемого архетипа является прототип pom.xml. Подойдет любой pom.xml, только не забудьте установить artifactId и groupId в качестве переменных ($ {artifactId} / $ {groupId}). Обе переменные будут инициализированы из командной строки при вызове archetype: create.

Примером прототипа pom.xml является:

<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>${groupId}</groupId>
  <artifactId>${artifactId}</artifactId>
  <version>${version}</version>
  <packaging>jar</packaging>

  <name>A custom project</name>
  <url>http://www.myorganization.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

4. Установите архетип и запустите плагин архетипа

Теперь вы готовы установить архетип:

mvn install

Теперь, когда вы создали архетип, вы можете попробовать его в своей локальной системе с помощью следующей команды. В этой команде вам нужно указать полную информацию об архетипе, который вы хотите использовать (его groupId, artifactId, его версию) и информацию о новом проекте, который вы хотите создать (artifactId и groupId). Не забудьте указать версию вашего архетипа (если вы не включите версию, создание архетипа может завершиться неудачно с сообщением о том, что версия: RELEASE не найдена)

mvn archetype:create                                    \
  -DarchetypeGroupId=<archetype-groupId>                \
  -DarchetypeArtifactId=<archetype-artifactId>          \
  -DarchetypeVersion=<archetype-version>                \
  -DgroupId=<my.groupid>                                \
  -DartifactId=<my-artifactId>

Как только вы довольны состоянием своего архетипа, вы можете развернуть (или отправить его в ibiblio) его как любой другой артефакт, и архетип будет доступен любому пользователю Maven.

Альтернативный способ начать создание своего архетипа

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

mvn archetype:create
  -DgroupId=[your project's group id]
  -DartifactId=[your project's artifact id]
  -DarchetypeArtifactId=maven-archetype-archetype

После этого теперь вы можете настроить содержимое каталога archetype-resources и archetype.xml, а затем перейти к шагу # 4 (установить архетип и запустить плагин архетипа).

...