ho il seguente scenario:progetto Maven con la dipendenza originaria e la copia di file
mylib è una libreria (per il quale ho le fonti, quindi mi piacerebbe metterli in un progetto mylib Maven: mylib per esempio). Questa libreria ha una dipendenza jar per cui ho solo il jar, e non si trova nel repository Maven (e NON voglio installarlo neanche lì). Per farlo compilare, qualcosa di simile funzionerebbe: aggiungi il file jar al progetto mylib in una cartella "lib", ad es. "lib/thirdpartylib.jar" e in pom.xml di mylib, aggiungi una dipendenza con gruppo/artefatto/versione auto scelti e una voce "<scope>system</scope><systemPath>${project.basedir}/lib/thirdpartylib.jar</systemPath>
". Il progetto mylib verrà compilato correttamente.
Nota che mylib ha anche una dipendenza runtime da un file dll, ad esempio thirdparty.dll. Ma per la compilazione questo non è importante.
Tuttavia, ora Quello che mi chiedo come realizzare i seguenti:
Eventuali altri progetti, ad esempio, progetto "X", che utilizza mylib, avrà bisogno del
- mylib.jar
- thirdpartylib.jar
- thirdpartylib.dll
,
e dovrete impostare il java.library.path nella directory (ad esempio "") tale che il vaso di terze parti e la DLL vengono trovati dalla VM in esecuzione.
La mia preoccupazione è questa: vorrei che le cose di jar/dll di terze parti fossero responsabilità del progetto mylib. Cioè Voglio definire la conoscenza, che è necessario copiare il jar e la DLL di terze parti nella cartella di destinazione e che java.library.path si riferisce a loro, per far parte del progetto mylib (mylib pom sa come deve essere utilizzato in altri progetti). Tuttavia, voglio questa conoscenza (ad esempio, le istruzioni di copia, indipendentemente da come sono fatte esattamente in Maven) per essere passivamente trasferite a qualsiasi altro progetto usando mylib, come ad esempio X. È in qualche modo possibile?
[La mia soluzione di hacking per ora sarebbe che ho una copia delle cose di terze parti in X, ma anche allora non so come copiare/gestire il file dll, quindi dovrei scrivere un readme che dice che il file dll deve essere copiato nella cartella bin della VM in esecuzione).
Qualsiasi suggerimento è apprezzato!
I stick with you're solution, grazie amico. – mtrovo