В Maven2, что самый простой путь состоит в том, чтобы создать ВОЙНУ и EAR для содержания той ВОЙНЫ в единственном АНГЛИЧАНИНЕ?

переключатель определенно предпочтен. Легче посмотреть на список переключателя случаев & знайте наверняка, что это делает, чем считать длинное если условие.

дублирование в if условие плохо обращается с глазами. Предположим, что один из эти == был записан !=; Вы заметили бы? Или если один экземпляр 'numError' был записан 'nmuError', который просто, оказалось, скомпилировал?

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

Что касается производительности, Ваш лучший выбор состоит в том, чтобы использовать профилировщика для измерения уровня приложения в условиях, которые подобны тому, что Вы ожидаете в дикой природе. Иначе Вы, вероятно, оптимизируете в неправильном месте и неправильным способом.

9
задан Jean-Rémy Revy 12 October 2012 в 15:44
поделиться

2 ответа

Все это, чтобы сказать: есть ли простой способ создать WAR и упаковать его в этот тривиально простой EAR? Я бы не хотел поддерживать их как два отдельных проекта, но также предпочел бы не прибегать к чрезмерно беспорядочным взломам с использованием сборок для достижения этой цели.

Краткий ответ: нет , простого maven не существует - способ сделать это, поскольку это противоречило бы правилу Maven, которое гласит «один артефакт на проект» (понимайте, что один результат на проект, что верно в 99% случаев).

И на самом деле я настоятельно рекомендую не идти хакерским путем и забыть об использовании сборок для создания EAR. Вместо этого создайте два модуля, один с упаковкой типа war , другой с упаковкой типа ear в зависимости от артефакта войны и объявляет их как модули родительского pom.xml . Примерно так:

my-project
|-- pom.xml       // packaging of type pom and my-war and my-ear as modules
|-- my-war
|   `-- pom.xml   // packaging of type war
`-- my-ear
    `-- pom.xml   // packaging of type ear

Если вы выберете Maven, воспользуетесь философией Maven, не сражайтесь с ней, это избавит вас от боли. Серьезно, взлом сборок для выполнения того, что уже делает maven-ear-plugin, - это просто защита от DRY. В таком случае лучше придерживаться Ant.

взлом сборок, чтобы делать то, что уже делает maven-ear-plugin, - это просто защита от DRY. В таком случае лучше придерживаться Ant.

взлом сборок, чтобы делать то, что уже делает maven-ear-plugin, - это просто защита от DRY. В таком случае лучше придерживаться Ant.

17
ответ дан 4 December 2019 в 09:36
поделиться

В Maven каждый отдельный проект создает артефакт. В вашей ситуации предлагаю создать два проекта: один для войны и один для ушей. Если вам нужно несколько версий ваших проектов, вы можете добиться этого с помощью классификаторов и профилей.

Это отрывок из примеров для richfaces.

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <executions>
          <execution>
            <id>jee5</id>
            <phase>package</phase>
            <goals>
              <goal>war</goal>
            </goals>
            <configuration>
              <webappDirectory>${project.build.directory}/${project.build.finalName}-jee5</webappDirectory>
              <classifier>jee5</classifier>
              <packagingExcludes>WEB-INF/lib/jsf-api*,WEB-INF/lib/jsf-impl*,WEB-INF/lib/el-*</packagingExcludes>
              <warSourceExcludes>WEB-INF/lib/jsf-api*,WEB-INF/lib/jsf-impl*,WEB-INF/lib/el-*</warSourceExcludes>
            </configuration>
          </execution>
          <execution>
            <id>tomcat6</id>
            <phase>package</phase>
            <goals>
              <goal>war</goal>
            </goals>
            <configuration>
              <webappDirectory>${project.build.directory}/${project.build.finalName}-tomcat6</webappDirectory>
              <classifier>tomcat6</classifier>
              <packagingExcludes>WEB-INF/lib/el-*</packagingExcludes>
              <warSourceExcludes>WEB-INF/lib/el-*</warSourceExcludes>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <webResources>
            <resource>
              <directory>${basedir}/src/main/java</directory>
              <targetPath>/WEB-INF/src</targetPath>
            </resource>
          </webResources>
        </configuration>
      </plugin>

В вашем наушнике используйте профили для импорта необходимой зависимости с соответствующим классификатором.

<profile>
  <id>jee5</id>
  <dependencies>
     <dependency>
       <groupId>org.richfaces.samples</groupId>
       <artifactId>richfaces-demo</artifactId>
       <version>${richfaces-version}</version>
       <classifier>jee5</classifier>
       <type>war</type>
       <scope>runtime</scope>
     </dependency>
  </dependencies>
</profile>   
2
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: