Domanda

Sto costruendo uno strumento di riga di comando che si basa su alcuni file di configurazione.

On Sviluppo, ho messo quei file in src/main/resources e accessibili da getClass().getResourceAsStream("/config-file-name"), che funziona bene.

Scelgo MAVEN-Assembly-Plugin per costruire il barattolo con tutte le dipendenze.

    <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.myproject.Scheduler</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
               <execution>
                   <id>make-my-jar-with-dependencies</id>
                   <phase>package</phase>
                   <goals>
                       <goal>single</goal>
                   </goals>
               </execution>
            </executions>
    </plugin>       
.

I file di configurazione sono tutti avvolti nel barattolo, ma voglio separarli.

Allora, aggiungo la seguente configurazione,

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>conf.properties</include>
            </includes>
            <filtering>true</filtering>
            <excludes>
                <exclude></exclude>
            </excludes>
        <targetPath>..</targetPath>             
        </resource>
    </resources>
.

Dopo averlo fatto, i file di configurazione sono sul lato con vaso anziché avvolto in vaso.

Ma il mio codice non può accedere ai file ora.

Devo cambiare il mio modo di accedere ai file nel codice?

o dovrei aver bisogno di non mettere quei file in src/main/resources/, qualsiasi alternativa?

Se qualcuno lo sa, ti preghiamo di aiutarti.

Grazie.


.

Aggiornamento: Infine, mi arrendo utilizzando il file di risorse di Mavence, invece, ho impostato il percorso del file sullo stesso percorso del barattolo per impostazione predefinita, tutto funziona bene tranne Eclipse si lamenta.

Dato che voglio spostare il file di configurazione fuori dal barattolo e non voglio che sia nella cartella Target / Classes, quindi utilizzo <targetPath>..</targetPath> per spostare il file Configura nella stessa directory del file JAR.

Quando ri-generare le impostazioni del progetto Eclipse, Eclipse afferma: Impossibile nidificare la cartella di output "Progetto / Target / Class-Classes" Inside Output Folder "Progetto / Target".

Qualcuno mi aiuta?

È stato utile?

Soluzione 3

Alla fine rinunciare utilizzando il file di risorse di Maven, impostare il percorso del file sullo stesso percorso del barattolo per impostazione predefinita, invece, tutto funziona bene tranne Eclipse si lamenta.

(dal momento che voglio spostare il file di configurazione dal barattolo e non voglio che sia nella cartella Target / Classes, quindi uso .. per spostare il file Configura nella stessa directory del file JAR. Quando IRi-generare le impostazioni del progetto Eclipse, Eclipse afferma: Impossibile nidificare la cartella di stampa "Project / Target / Class-Classes" Inside Output Folder "Progetto / Target".)

Non ho trovato la soluzione fino ad ora, sembra un bug di Eclipse.

Ora, arreso Eclipse e sono cambiato in Intellij Idea, è un IDE abbastanza bello, particolarmente perfettamente integrato con Maven.Eviterò la possibilità di utilizzare Eclipse per qualsiasi progetto MAVEN.

Altri suggerimenti

L'applicazione non può accedere ai file di configurazione poiché non è più nel suo classpath.

Se si desidera separare i file di configurazione dal resto dell'applicazione, è possibile che si consiglia di rallegarsi presso il tuo Formato di assembly .Potresti voler usare il bidone invece di JAR-con-dipendenze, anche se viene fornito con sfide sulla distribuzione e l'utilizzo.

A seconda di quanto sia complicato il file di proprietà, è possibile utilizzare la capacità del filtro del plugin delle risorse per modificare il valore basato sui profili di Maven.Ad esempio, se volevi avere una proprietà denominata posizione è possibile definire un Profilo di Dev e Produzione, quindi impostare il valore in una proprietà MAVEN in POM (o Profiles.xml se sei su MAVEN 2): Poi nel file della proprietà che faresti:

location=${my.location}
.

Assicurati di impostare il filtraggio sul tuo POM, come:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>
.

Quando si crea, se si guarda nella directory di destinazione e visualizza quel file di proprietà, è necessario visualizzare il valore corretto sostituito in.

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