Domanda

mi è stato sbattere la testa contro un muro per circa un'ora su questo: sto cercando di passare una semplice proprietà (java.library.path) per exec-Maven-plugin. L'obiettivo è di averlo integrazione con NetBeans destro file clicca> Esegui procedura di file.

Così ho impostato la mia POM in questo modo:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.1.1</version>
            <configuration>
                <environmentVariables>
                    <java.library.path>native/win32-x86</java.library.path>
                </environmentVariables>
            </configuration>
        </plugin>
    </plugins>
</build>

(io uso una vecchia versione in modo da poter vedere le args di esecuzione, ma la sua pienamente riproducibili con 1,2)

Poi mi fate clic destro il file e fare clic su "File Run". Netbeans avvia questo processo:

 W:\programming\apache-maven-2.2.1\bin\mvn.bat -Dexec.classpathScope=runtime -Dexec.args=-classpath %classpath org.quackedcube.camera.CameraDemo -Dexec.executable=C:\Program Files\Java\jdk1.6.0_21\bin\java.exe -Dnetbeans.execution=true -Dmaven.repo.local=W:\programming\maven-repo process-classes exec:exec

(L'esecuzione originale percorso di classe completo è stato cambiato in exec:exec quindi spero la mia configurazione applicata)

Ma la mia variabile d'ambiente è apparentemente ignorato, come il programma eseguito risultante è:

 Result of cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_21\bin\java.exe" -classpath *snip* org.quackedcube.camera.CameraDemo" execution is: '1'.

Ho provato

  • L'uso dei nomi chiave ed un valore separati all'interno di un tag enviornmentVariable
  • Utilizzare una chiave e tag di valore direttamente all'interno di un tag enviornmentVariables (la pena di provare)
  • legandosi a una fase
  • passando come un esperto di arg e utilizzando exec: java invece
  • Passando -Djava.library.path = native / win32-x86 come argomento Run e l'opzione VM nella pagina di configurazione del progetto

e tutti hanno fallito. Sono davvero in perdita qui.

Credo che questo è lo svantaggio di usare JNI in Maven:. Devi passare come argomento per i test, il vostro tempo di esecuzione, il tuo POM modulo di corsa, e la vostra POM genitore

Quindi la mia domanda: Come è possibile passare una proprietà java.library.path a un file eseguiti? Sarebbe bello se integrato con funzionalità di File Netbeans Run (Perciò non ho di cambiare il nome della classe in un POM, costruire, quindi eseguire)

È stato utile?

Soluzione

non lo sapeva, ma a quanto pare quando si fa questo è necessario mettere prima questa proprietà. Non pensavo che fosse necessario in quanto il classpath non viene eseguito immediatamente, ma a quanto pare fa la differenza.

Per risolvere il problema, ho semplicemente cambiato questo in Proprietà progetto> Azioni> File Esegui via principale

exec.classpathScope=${classPathScope}
exec.args=-Djava.library.path="native/win32-x86" -classpath %classpath ${packageClassName}
exec.executable=java

Il motivo non è possibile specifcy nel POM è che NB passa il percorso di classe e ciò che la sua esecuzione tramite linea di comando exec.args, che ignora che cosa è nel vostro POM.

Anche se questo potrebbe essere brutto e dipendenti dalla piattaforma, la sua cosa succede quando si mescolano JNI e Maven. Non c'è davvero un altro modo che posso vedere.

Altri suggerimenti

Non è sicuro se si è tentato questo, ma finché è necessario insieme di proprietà a livello di JVM dovrebbe essere fatto con -Djava.library.path=/some/path

Quindi, al fine di precisare per exec-Maven-plugin che si potrebbe scrivere qualcosa di simile:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1</version>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-Djava.library.path=${java.library.path}</argument>
    </arguments>
    </configuration>
</plugin>

È necessario, ovviamente, per aggiornare il file eseguibile e magari aggiungere altri attributi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top