2013-08-02 9 views
2

Я имею такую ​​конфигурацию Maven, которую я хочу использовать на разных операционных системах:Не удается построить Maven проект

<?xml version="1.0" encoding="UTF-8"?> 
<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>com.dx57dc</groupId> 
    <artifactId>DX57DC</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 

    <name>DX57DC</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <mainClass>com.dx57dc.MainApp</mainClass> 
    </properties> 

    <profiles> 
     <profile> 
      <activation> 
       <os> 
        <name>Windows XP</name> 
        <family>Windows</family> 
        <arch>x86</arch> 
        <version>5.1.2600</version> 
       </os> 
      </activation> 

      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-dependency-plugin</artifactId> 
         <version>2.8</version> 
         <executions> 
          <execution> 
           <id>unpack-dependencies</id> 
           <phase>package</phase> 
           <goals> 
            <goal>unpack-dependencies</goal> 
           </goals> 
           <configuration> 
            <excludeScope>system</excludeScope> 
            <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds> 
            <outputDirectory>${project.build.directory}/classes</outputDirectory> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>exec-maven-plugin</artifactId> 
         <version>1.2.1</version> 
         <executions> 
          <execution> 
           <id>unpack-dependencies</id> 

           <phase>package</phase> 
           <goals> 
            <goal>exec</goal> 
           </goals> 
           <configuration> 
            <executable>${java.home}/../bin/javafxpackager</executable> 
            <arguments> 
             <argument>-createjar</argument> 
             <argument>-nocss2bin</argument> 
             <argument>-appclass</argument> 
             <argument>${mainClass}</argument> 
             <argument>-srcdir</argument> 
             <argument>${project.build.directory}/classes</argument> 
             <argument>-outdir</argument> 
             <argument>${project.build.directory}</argument> 
             <argument>-outfile</argument> 
             <argument>${project.build.finalName}.jar</argument> 
            </arguments> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-compiler-plugin</artifactId> 
         <version>3.1</version> 
         <configuration> 
          <source>1.7</source> 
          <target>1.7</target> 
          <compilerArguments> 
           <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath> 
          </compilerArguments> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 

     </profile> 

     <profile> 
      <activation> 
       <os> 
        <name>Linux</name> 
        <family>Linux</family> 
        <arch>x86</arch> 
        <!-- <version>5.1.2600</version> --> 
       </os> 
      </activation> 

      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-dependency-plugin</artifactId> 
         <version>2.8</version> 
         <executions> 
          <execution> 
           <id>unpack-dependencies</id> 
           <phase>package</phase> 
           <goals> 
            <goal>unpack-dependencies</goal> 
           </goals> 
           <configuration> 
            <excludeScope>system</excludeScope> 
            <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds> 
            <outputDirectory>${project.build.directory}/classes</outputDirectory> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>exec-maven-plugin</artifactId> 
         <version>1.2.1</version> 
         <executions> 
          <execution> 
           <id>unpack-dependencies</id> 

           <phase>package</phase> 
           <goals> 
            <goal>exec</goal> 
           </goals> 
           <configuration> 
            <executable>${java.home}/../bin/javafxpackager</executable> 
            <arguments> 
             <argument>-createjar</argument> 
             <argument>-nocss2bin</argument> 
             <argument>-appclass</argument> 
             <argument>${mainClass}</argument> 
             <argument>-srcdir</argument> 
             <argument>${project.build.directory}/classes</argument> 
             <argument>-outdir</argument> 
             <argument>${project.build.directory}</argument> 
             <argument>-outfile</argument> 
             <argument>${project.build.finalName}.jar</argument> 
            </arguments> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-compiler-plugin</artifactId> 
         <version>3.1</version> 
         <configuration> 
          <source>1.7</source> 
          <target>1.7</target> 
          <compilerArguments> 
           <bootclasspath>/opt/java/jre/lib/ext/jfxrt.jar</bootclasspath> 
          </compilerArguments> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 

     </profile> 
    </profiles> 


</project> 

я получаю это предупреждение:

--- exec-maven-plugin:1.2.1:exec (default-cli) @ DX57DC --- 
Error: Unable to access jarfile D:\Documents 

Можете ли вы сказать мне, что это правильное способ настроить этот файл POM?

P.S После того как я добавил «» с ними или без них я получаю эту ошибку на Windows:

[exec:exec] 
java.lang.NoClassDefFoundError: javafx/application/Application 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 
Caused by: java.lang.ClassNotFoundException: javafx.application.Application 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 13 more 
Exception in thread "main" [INFO] ------------------------------------------------------------------------ 
BUILD FAILURE 
------------------------------------------------------------------------ 
Total time: 1.000s 
Finished at: Fri Aug 02 14:09:35 PDT 2013 
Final Memory: 6M/15M 
------------------------------------------------------------------------ 
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (default-cli) on project DX57DC: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1] 

To see the full stack trace of the errors, re-run Maven with the -e switch. 
Re-run Maven using the -X switch to enable full debug logging. 

For more information about the errors and possible solutions, please read the following articles: 
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

ответ

4

Я думаю, что его, потому что некоторые из аргументов, направленных на EXEC-Maven-плагин содержит пробелы.

В вашем случае это выглядит как ${project.build.directory} или какая-либо другая переменная разрешается до C:\Documents and Settings\something.

Когда вы передаете это:

<argument>-srcdir</argument> 
<argument>${project.build.directory}/classes</argument> 

Это будет решать: -srcdir=C:\Documents and Settings\something/classes.

Когда это должно было быть примерно так: -srcdir="C:\Documents and Settings\something/classes" с "".

+0

Я использую NetBeans 7.4 в Windows XP. Я помещаю кавычки в nbactions.xml: -jar "$ {basedir} /target/mavenproject1-1.0-SNAPSHOT.jar". Проблема решена. –

1

В конфигурации Exec-плагин, поставить «» вокруг все ваши свойства <argument> теги (те, которые содержат $ в них) как этот

<arguments> 
    <argument>-createjar</argument> 
    <argument>-nocss2bin</argument> 
    <argument>-appclass</argument> 
    <argument>"${mainClass}"</argument> 
    .... 
</arguments> 
+0

Я обновил сообщение –

+0

, похоже, что вы пропускаете банку в своем пути к классу при запуске maven-exec. Один из ваших аргументов '', вероятно, ошибочен, особенно тот, который содержит javafx.application.Application. Либо вы не передаете свою банку, либо класс не находится в папке, которую вы думаете, проверьте свои пути свойств, чтобы убедиться, что класс находится в одном из них – Hilikus

Смежные вопросы