Пользовательская библиотека maven не упакована в мою работающую флягу

Я сейчас программирую на Java в течение года, и мне пришлось перенять несколько проектов у предыдущего программиста. Я не новичок в программировании с тех пор, как начал программировать на.NET в 1998 году. Теперь для проекта Java мне нужно поддерживать 24 версии (и новые версии) базовой библиотеки (все той же структуры, но они специфичны для версии стороннее приложение). Я начал с Maven два дня назад и попробовал это на небольшом демонстрационном рабочем пространстве, чтобы изучить Maven и заставить необходимые вещи работать. Каждая поддерживаемая версия имеет несколько jar-файлов, которые я инкапсулировал в пользовательской библиотеке. Чтобы сделать сборку, мне нужно изменить эту библиотеку до правильной версии и выполнить экспорт проекта в виде Runnable-Jar (все включено в jar из-за требований лицензии). Итак, я создал свой первый POM и вот он:

<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>PPC</groupId>
    <artifactId>PPC</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>PPC</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>LibraryProject</groupId>
            <artifactId>LibraryProject</artifactId>
            <version>1.0.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies> <profiles>
        <profile>
            <id>PPC_8.1</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <finalName>PPC_8.1</finalName>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.1</version>
                        <configuration>
                            <compilerVersion>1.7</compilerVersion>
                            <source>1.7</source>
                            <target>1.7</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-eclipse-plugin</artifactId>
                        <inherited>true</inherited>
                        <version>2.10</version>
                        <configuration>
                            <classpathContainers>
                                <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
                                <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Primavera-P6-8.1</classpathContainer>
                            </classpathContainers>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.dstovall</groupId>
                        <artifactId>onejar-maven-plugin</artifactId>
                        <version>1.4.4</version>
                        <executions>
                            <execution>
                                <configuration>
                                    <mainClass>com.company.main.App</mainClass>
                                    <onejarVersion>0.97</onejarVersion>
                                    <attachToBuild>true</attachToBuild>
                                    <classifier>onejar</classifier>
                                </configuration>
                                <goals>
                                    <goal>one-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>PPC_7.0</id>
            <build>
                <finalName>PPC_7.0</finalName>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.1</version>
                        <configuration>
                            <compilerVersion>1.7</compilerVersion>
                            <source>1.7</source>
                            <target>1.7</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-eclipse-plugin</artifactId>
                        <version>2.10</version>
                        <inherited>true</inherited>
                        <configuration>
                            <classpathContainers>
                                <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
                                <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Primavera-P6-7.0</classpathContainer>
                            </classpathContainers>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.dstovall</groupId>
                        <artifactId>onejar-maven-plugin</artifactId>
                        <version>1.4.4</version>
                        <executions>
                            <execution>
                                <configuration>
                                    <mainClass>com.company.main.App</mainClass>
                                    <onejarVersion>0.97</onejarVersion>
                                    <attachToBuild>true</attachToBuild>
                                    <classifier>onejar</classifier>
                                </configuration>
                                <goals>
                                    <goal>one-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <pluginRepositories>
        <pluginRepository>
            <id>onejar-maven-plugin.googlecode.com</id>
            <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
        </pluginRepository>
    </pluginRepositories>
</project>

Как видите, у меня есть два профиля. Один для v8.1 и один для v7.0.

Мой поток сборки: сначала я запускаю mvn install для libraryProject. Затем я запускаю 'mvn package' для основного проекта. Это одна сборка v8.1 (профиль по умолчанию) как исполняемый jar со всеми зависимостями, кроме пользовательской библиотеки. Следующий вызов - 'mvn package -PPPC_7.0', который собирает v7.0 без пользовательской библиотеки.

Итак, мой вопрос: что я могу изменить / сделать неправильно, чтобы пользовательская библиотека была добавлена ​​в исполняемый файл jar для каждого профиля?

Заранее спасибо,
Джо

PS: я использую Eclipse Luna (Java EE IDE)

2 ответа

Робби Корнелиссен прокомментировал предложение некоторое время назад:
Есть какой-нибудь шанс просто упаковать это и использовать в качестве зависимости? Это определенно решит вашу проблему... - Робби Корнелиссен 11 июня в 8:52

Я не хотел этого делать, но я не получал новых предложений (и сам не нашел решения). Поэтому я упаковал их как предложено и добавил их как зависимость.

Это работает для меня сейчас.

Спасибо и до следующего раза
Джо

Что я использую это:

 <build>

<plugins>

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <archive>
        <manifest>
          <mainClass>com.clouway.App</mainClass>
        </manifest>
      </archive>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
        <id>make-my-jar-with-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

</plugins>

`

Удачи!

Другие вопросы по тегам