簡體   English   中英

NPE在maven-jar-plugin中

[英]NPE in maven-jar-plugin

在Maven構建期間發生的錯誤:

[錯誤]無法在項目cc-distFS上執行目標org.apache.maven.plugins:maven-jar-plugin:2.4:jar(默認為jar):組裝JAR時出錯:無法讀取以下文件系統屬性:/ home / user /trunk/src/cc-distFS/pom.xml:無法引用目錄:'/home/user/trunk/src/cc-distFS/pom.xml':設置環境變量時出錯:NullPointerException-> [幫助1]

Maven -X包

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleThreadedBuilder$1.call(LifecycleThreadedBuilder.java:167)
at org.apache.maven.lifecycle.internal.LifecycleThreadedBuilder$1.call(LifecycleThreadedBuilder.java:163)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Error assembling JAR
at org.apache.maven.plugin.jar.AbstractJarMojo.createArchive(AbstractJarMojo.java:237)
at org.apache.maven.plugin.jar.AbstractJarMojo.execute(AbstractJarMojo.java:255)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 13 more
    Caused by: org.codehaus.plexus.archiver.ArchiverException: Failed to read filesystem attributes for: /home/user/trunk/src/cc-dto/pom.xml
at org.codehaus.plexus.archiver.ArchiveEntry.createFileEntry(ArchiveEntry.java:163)
at org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:404)
at org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:316)
at org.apache.maven.archiver.MavenArchiver.createArchive(MavenArchiver.java:526)
at org.apache.maven.plugin.jar.AbstractJarMojo.createArchive(AbstractJarMojo.java:230)
... 16 more
    Caused by: java.io.IOException: Failed to quote directory: '/home/user/trunk/src/cc-dto/pom.xml'
at org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributesByPath(PlexusIoResourceAttributeUtils.java:256)
at org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributes(PlexusIoResourceAttributeUtils.java:172)
at org.codehaus.plexus.archiver.ArchiveEntry.createFileEntry(ArchiveEntry.java:159)
... 20 more
    Caused by: org.codehaus.plexus.util.cli.CommandLineException: Error setting up environmental variables
at org.codehaus.plexus.util.cli.Commandline.getEnvironmentVariables(Commandline.java:466)
at org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:628)
at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLineAsCallable(CommandLineUtils.java:140)
at org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributesByPath(PlexusIoResourceAttributeUtils.java:247)
... 22 more
    Caused by: java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:394)
at org.codehaus.plexus.util.cli.CommandLineUtils.getEnvFromSystem(CommandLineUtils.java:624)
at org.codehaus.plexus.util.cli.CommandLineUtils.getSystemEnvVars(CommandLineUtils.java:284)
at org.codehaus.plexus.util.cli.CommandLineUtils.getSystemEnvVars(CommandLineUtils.java:260)
at org.codehaus.plexus.util.cli.Commandline.addSystemEnvironment(Commandline.java:442)
at org.codehaus.plexus.util.cli.Commandline.getEnvironmentVariables(Commandline.java:462)
... 25 more

有人知道這是什么意思嗎?

PS:

% mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 15:44:56+0700)
Maven home: /home/user/Applications/apache-maven
Java version: 1.6.0_27, vendor: Sun Microsystems Inc.
Java home: /home/user/Applications/jdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-26-generic-pae", arch: "i386", family: "unix"

% java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode)

cc-distFS模塊的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.uc</groupId>
    <artifactId>cc</artifactId>
    <version>TRUNK-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<groupId>${parent.groupId}</groupId>
<artifactId>cc-distFS</artifactId>
<packaging>jar</packaging>
<version>${parent.version}</version>
<name>${pom.artifactId}</name>

<dependencies>
    <dependency>
        <groupId>com.cc</groupId>
        <artifactId>cc-lib</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
</dependencies>

PS:我制作fsck之后,Bug消失了。

有點奇怪的第一件事是:

<groupId>${parent.groupId}</groupId>
<artifactId>cc-distFS</artifactId>
<packaging>jar</packaging>
<version>${parent.version}</version>
<name>${pom.artifactId}</name>

您永遠不要使用$ {pom ....}或$ {parent.groupId}。 您應該改為$ {project.groupId}等。

但是,如果您有父母,則不需要groupId或版本的定義,因為它是從父母那里繼承的。 換句話說,您的代碼段如下所示:

<parent>
    <groupId>com.uc</groupId>
    <artifactId>cc</artifactId>
    <version>TRUNK-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<artifactId>cc-distFS</artifactId>
<name>${project.artifactId}</name>

此外,像“ TRUNK-SNAPSHOT”這樣的版本不是一個很好的選擇。 我建議像規則描述那樣使用更像“ 1.0-SNAPSHOT”的東西。 還有一件事情,如果您有父母,則不需要在父母中定義相對路徑,從而導致以下結果:

<parent>
    <groupId>com.uc</groupId>
    <artifactId>cc</artifactId>
    <version>TRUNK-SNAPSHOT</version>
</parent>

<artifactId>cc-distFS</artifactId>
<name>${project.artifactId}</name> <!-- I wouldn't do that -->

但是,讓我真正懷疑的是以下幾點:

Failed to read filesystem attributes for: /home/user/trunk/src/cc-dto/pom.xml

原因表明您的pom.xml文件或目錄有問題? (權限?),並且以下內容明確表明您的目錄有問題:

java.io.IOException: Failed to quote directory: '/home/user/trunk/src/cc-dto/pom.xml'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM