Maven 프로젝트에 시스템 속성 지정
Maven 프로젝트에서 시스템 속성을 설정하는 방법이 있습니까 (내 말은 어떻게합니까?)?
내 테스트 및 내 웹 앱 (로컬 실행)에서 속성에 액세스하고 싶습니다. Java 시스템 속성을 사용할 수 있습니다.
./settings.xml 또는 이와 함께 어디에 넣어야합니까?
석고
나는 오픈 소스 프로젝트를 가져 오기 JavaDB를 사용하도록 db 구성을 변경했습니다.
이제 JavaDB 용 jdbc url에서 데이터베이스의 위치를 전체 경로로 어디에서 찾을 수 있습니다 (참조 : this other question ).
또는 시스템 속성 : derby.system.home
이미 코드가 작동하고 현재는 다음과 같이 모두 코딩되어 있습니다.
jdbc:derby:/Users/oscarreyes/javadbs/mydb
그리고 전체 경로를 제거하고 다음과 같이두고 싶습니다.
jdbc:derby:mydb
이를 위해 시스템 속성 ( derby.system.home
)을 maven 에 지정해야 하지만 방법을 모르겠습니다.
테스트는 junit (pom.xml에 실행이 표시되지 않음)을 사용하여 실행 웹 앱은 jetty를 사용하여 실행합니다.
명령 줄에서 시스템이 작동하는 속성을 지정하는 것은 존재하는 것에서 작동하는 속성을 지정하는 것이 실용적인지 확실하지 않습니다 (다른가 일식 / 아이디어 / 뭐든지에서 있음)
Maven 프로젝트에서 시스템 속성을 설정하는 방법이 있습니까 (내 말은 어떻게합니까?)? 나는 나의 시험에서 재산에 접근하고 싶다 ...]
Maven Surefire Plugin 구성 에서 시스템 속성을 수 있습니다. (테스트는 기본적으로 분기되기 때문에) 시스템 속성 사용 에서 :
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<systemPropertyVariables>
<propertyName>propertyValue</propertyName>
<buildDirectory>${project.build.directory}</buildDirectory>
[...]
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
및 내 webapp (로컬 실행)
여기서 의미하는 바는 확실하지 않지만 웹 앱 컨테이너가 Maven에 의해 시작됩니다. 다음을 사용하여 명령 줄에서 시스템 속성을 사용할 수 있습니다.
mvn -DargLine="-DpropertyName=propertyValue"
업데이트 : 좋습니다. 지금 확인하세요. Jetty의 경우 Maven Jetty의 경우 구성에서 시스템 속성을 사용합니다. 시스템 속성 설정 에서 :
<project>
...
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
...
<systemProperties>
<systemProperty>
<name>propertyName</name>
<value>propertyValue</value>
</systemProperty>
...
</systemProperties>
</configuration>
</plugin>
</plugins>
</project>
properties-maven-plugin 플러그인 이 도움이 될 수 있습니다.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<goals>
<goal>set-system-properties</goal>
</goals>
<configuration>
<properties>
<property>
<name>my.property.name</name>
<value>my.property.value</value>
</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
"독립 실행 형"Java 앱을 사용하는 경우 exec-maven-plugin을 사용 하여이 작업을 수행 할 수도있는 것을 배웠습니다.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${maven.exec.plugin.version}</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${exec.main-class}</mainClass>
<systemProperties>
<systemProperty>
<key>myproperty</key>
<value>myvalue</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
테스트와 웹앱이 동일한 Maven 프로젝트에있는 경우 프로젝트 POM에서 속성을 사용할 수 있습니다. 그런 다음 Maven이 해당 파일에서 속성을 접근 할 수 있습니다. 필터링하는 방법에는 여러 가지가 가장 일반적인 방법은 리소스 단계 ( http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-description.html)입니다.
테스트와 웹앱이 서로 다른 Maven 프로젝트에있는 경우 Windows의 maven 저장소 폴더 (C : \ Documents and Settings \ username.m2)에있는 settings.xml에 속성을 넣을 수 있습니다. 테스트 및 웹앱에서 속성을 읽으려면 필터링 또는 다른 방법을 사용해야합니다.
참고 URL : https://stackoverflow.com/questions/3231797/specify-system-property-to-maven-project
'ProgramingTip' 카테고리의 다른 글
왜 wait ()는 항상 루프 내에서 호출됩니까? (0) | 2020.11.23 |
---|---|
반사가 어떻게 코드 냄새로 이어지지 않습니까? (0) | 2020.11.23 |
객체 지향 디자인과 관련된 구성이란 무엇입니까? (0) | 2020.11.23 |
테스트 및 개발에 사용할 수있는 SMTP 서버-실제로 메일을 배달하지 않습니다. (0) | 2020.11.23 |
Git- 원격 저장소에서 파일을 삭제하는 방법 (0) | 2020.11.23 |