Sto usando Seam per sviluppare la mia applicazione ed eseguirla su weblogic 10.1MP Utilizzare maven2 per creare l'applicazione e non trovare il file jboss-seam-wls-compatible.jar in qualsiasi repository. In maven come posso copiare questo jar dalla mia cartella locale alla cartella target/WEB-INF/lib.Maven Per copiare il file jar dalla cartella locale
risposta
È possibile installare il jar sul repository locale utilizzando il plug-in di installazione install-file goal, è quindi possibile dichiarare una dipendenza dall'artefatto come di consueto, e sarà impacchettato automaticamente dal plugin war.
Se si dispone di un repository remoto, è possibile utilizzare il plug-in di implementazione deploy-file goal per distribuire il jar su quel repository, quindi i compagni di squadra possono anche accedere al jar.
Per informazioni, c'è un Jira per rendere questo artefatto disponibile su centrale.
Aggiornamento basato sul tuo commento. Ti consiglio di non farlo perché non è una buona pratica, ma se devi ospitare il jar nella struttura del tuo progetto puoi metterlo sotto say src/main/lib e usare il plugin antrun per copiarlo su WEB-INF/lib.
Ad esempio:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<copy todir="${project.build.directory}/WEB-INF/lib">
<fileset dir="src/main/lib"/>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Il modo giusto per fare questo in Maven è installare in un repository (remoto o locale).
Tuttavia, vi sono circostanze in cui il repository locale è meno preferibile. Ad esempio, esegui Maven su molte macchine e non vuoi installarlo manualmente.
Io uso solo l'anti-pattern di controllo dei JAR nel controllo della versione in questi rari casi. Non mi preoccupo nemmeno di installarlo nel repository locale perché aggiunge un altro passaggio e crea un'altra copia del JAR. Uso semplicemente il JAR direttamente in questo modo,
<dependency>
<groupId>local</groupId>
<artifactId>homeless-jar</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/homeless.jar
</systemPath>
</dependency>
MODIFICA: Il $ {basedir} è definito da Maven. È la directory di base del progetto Maven, dove è il tuo pom.xml. Il mio esempio non era chiaro. Vedi questo,
<dependency>
<groupId>any-id</groupId>
<artifactId>any-name</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/lib/homeless.jar
</systemPath>
</dependency>
Come faccio a sapere quale basedir è per il mio progetto? –
Vedere le mie modifiche ................ –
La mia intenzione non è quella di creare un repository locale. Voglio sapere se c'è un modo per usare Maven per copiare questo jar dal mio src o risorsa o qualsiasi altra cartella nella cartella di destinazione – user118802
hai già un repository locale se stai usando Maven, non è necessario crearne uno. Si trova di default in ~/.m2/repository –
@Rich, il mio approccio non è legato alla struttura della directory della scatola, è ancora meno del tuo suggerimento di antrun. $ {basedir} è definito da Mavens quindi è solo legato alla struttura delle directory del progetto, è tutto su Maven? –