Добавьте jar (зависимость от системы видимости) в сборку Ear - PullRequest
0 голосов
/ 12 октября 2010

Я работаю с Maven , и я хочу сделать сборку с упаковкой ear , я хочу добавить зависимость с системой scope , а также с указанием systemPath банки, как следует:

<dependency> 
  <groupId>group1</groupId> 
  <artifactId>group1</artifactId> 
  <version>1</version> 
  <scope>system</scope> 
  <systemPath>D:\Buildear\Jars\file.jar</systemPath> 
</dependency> 

Но я не нашел банку в ухе моего генератора !!!

Помогите пожалуйста.

Ответы [ 2 ]

3 голосов
/ 12 октября 2010

Я работаю с Maven и хочу сделать сборку с упаковкой ear, хочу добавить зависимость с областью действия system (...).Но я не нашел банку в ухе моего генератора !!!

Да, это именно то, что вы получаете, когда (ab) использует system зависимую область, которая должна быть всегда доступна по определению .Я много раз писал об этом, например, в этом предыдущем ответе , который я цитирую ниже:

Я уже написал много , много, действительно много раз об этом здесь, на SO, и в 99% случаев следует избегать system зависимостей в пределах области видимости.И я еще раз повторю то, что мини-руководство Dependency Scopes говорит еще раз:

  • system: эта зависимость требуется в некоторыхфаза жизненного цикла вашего проекта, но зависит от системы. Использование этой области не рекомендуется: эта функция считается «продвинутой» и должна использоваться только в том случае, если вы действительно понимаете все последствия ее использования, что может быть чрезвычайно сложно, если вообще не поддается количественной оценке. Эта область по определению делает вашу сборку непереносимой.Это может быть необходимо в определенных крайних случаях.В системную область входит элемент <systemPath>, который указывает на физическое расположение этой зависимости на локальном компьютере.Таким образом, он используется для ссылки на некоторый артефакт, который, как ожидается, будет присутствовать на данном локальном компьютере, а не в репозитории;и чей путь может варьироваться от машины к машине.Элемент systemPath может ссылаться на переменные среды в своем пути: например, ${JAVA_HOME}.

Таким образом, вместо использования области действия system, либо:

  • Добавьте свои библиотеки в локальный репозиторий через install:install-file.Это быстрый и грязный способ заставить все работать, это может быть вариант, если вы один, но это делает вашу сборку непереносимой.
  • Установите и запустите «корпоративный репозиторий», такой как Nexus, Archiva или Artifactory, и добавьте свои библиотеки через deploy:deploy-file.Это идеальный сценарий.
  • Установите хранилище на основе файлов, как описано в этого предыдущего ответа , и поместите туда свои библиотеки.Это лучший компромисс, если у вас нет корпоративного хранилища, но вам нужно работать в команде и не хотите жертвовать переносимостью.

Пожалуйста, прекратите использоватьsystem scope.

0 голосов
/ 12 октября 2010
<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>
    <artifactId>aaa</artifactId>
    <groupId>aaa</groupId>
    <version>1.0</version>
</parent>

<groupId>aaa</groupId>
<artifactId>aaa</artifactId>
<version></version>

<packaging>ear</packaging>
<name>aaa - Ear</name>
<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>aaa-ejb</artifactId>
        <version>${project.version}</version>
        <type>ejb</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>aaa-webapp</artifactId>
        <version>${project.version}</version>
        <type>war</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>jboss</groupId>
        <artifactId>jboss-common</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jboss</groupId>
        <artifactId>jbosssx</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <finalName>${aaa.name}-${project.version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <generateApplicationXml>false</generateApplicationXml>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <ejbModule>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>aaa-ejb</artifactId>
                    </ejbModule>
                    <jarModule>
                        <groupId>xml-apis</groupId>
                        <artifactId>xml-apis</artifactId>
                        <excluded>true</excluded>
                    </jarModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
</build>
<properties>
    <aaa.name>aaa-batch</aaa.name>
</properties>

Это создает ухо и копирует библиотеки в папку lib в ухе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...