事實證明,這比我最初預計的要簡單 - 維克多的評論讓我得出了正確的答案。我開始挖掘出多個配置文件(一個用於開發,一個用於產品),但後來意識到我並不需要兩個配置文件。在本地工作時,我並沒有真正經歷Maven構建過程 - 我只是在執行Java類。唯一一次我經歷了Maven構建過程的時候,我想要打包我的應用程序進行部署。因此,我只是在使用maven-antrun-plugin的POM文件中添加了一個部分。我最後的代碼最終看上去像這樣:
文件:log4j.properties:
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
文件:log4j_production.properties
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A2
log4j.appender.A2=org.apache.log4j.net.SocketAppender
log4j.appender.A2.remoteHost=my.server.com
log4j.appender.A2.port=6000
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
文件:pom.xml的
...
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete file="${project.build.outputDirectory}/log4j.properties"/>
<copy file="src/main/resources/log4j_production.properties"
toFile="${project.build.outputDirectory}/log4j.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
...
這似乎是訣竅。當我在本地運行時,我加載了log4j.properties,它給了我一個控制檯appender。當我打包生產發行版時,Maven會用默認的log4j.properties文件替換爲使用套接字appender的替代文件。
謝謝!
你可能想看看在Maven的配置文件的概念(http://maven.apache.org/guides/mini /guide-building-for-different-environments.html),可用於爲不同的配置文件指定不同的資源(如測試,產品等)。 – Vikdor