我想使用maven-dependency-plugin将我的多模块项目的所有子模块中的EAR文件复制到相对于整个项目的根目录的目录.
也就是说,我的布局看起来与此类似,名称已更改:
to-deploy/
my-project/
ear-module-a/
ear-module-b/
more-modules-1/
ear-module-c/
ear-module-d/
more-modules-2/
ear-module-e/
ear-module-f/
...
Run Code Online (Sandbox Code Playgroud)
我希望所有的EAR文件都从它们各自模块的目标目录中复制到my-project/../to-deploy
最后
to-deploy/
ear-module-a.ear
ear-module-b.ear
ear-module-c.ear
ear-module-d.ear
ear-module-e.ear
ear-module-f.ear
my-project/
...
Run Code Online (Sandbox Code Playgroud)
我可以在每个耳模块中使用相对路径来完成它,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>ear</type>
<outputDirectory>../../to-deploy</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但我宁愿不在<outputDirectory>
元素中指定相对路径.我更喜欢类似的东西${reactor.root.directory}/../to-deploy
,但我找不到这样的东西.
此外,我更喜欢有一些方法来继承这个maven-dependency-plugin配置,所以我不必为每个EAR模块指定它.
我还尝试从根pom继承自定义属性:
<properties>
<myproject.root>${basedir}</myproject.root>
</properties>
Run Code Online (Sandbox Code Playgroud)
但是当我试图${myproject.root}
在耳模块POM中使用时,${basedir}
它将解析为耳模块的基础.
另外,我找到了http://labs.consol.de/lang/de/blog/maven/project-root-path-in-a-maven-multi-module-project/,其中建议每个开发人员,大概是连续的集成服务器应该在profiles.xml文件中配置根目录,但我不认为它是一个解决方案.
那么有一种简单的方法可以找到多模块项目的根目录吗?
老板告诉我使用Moq,就是这样.我喜欢它,但它似乎不像MSTest或mbunit等...你无法测试内部方法
所以我被迫在我的界面中公开一些内部实现,以便我可以测试它.
我错过了什么吗?
你能用Moq测试内部方法吗?
非常感谢
使用.mdb文件作为后端运行多线程(.NET Framework 3.5 SP1 WinForms)桌面应用程序几个小时(约6小时Win7 64位,~24小时WinXP)后,我收到以下运行时错误:
异常 - > 未指定的错误
StackTrace - >
System.Data.OleDb.OleDbConnectionFactory.CreateConnection上的System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection连接)
(DbConnectionOptions选项,Object poolGroupProviderInfo,DbConnectionPool池,DbConnection owningObject)在System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,DbConnectionPoolGroup poolGroup)
在System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)
在System.Data.OleDb.OleDbConnection.Open()
在NetworkManager.SearchInputFileHandler.GetInputRows(SearchProgramTypeEnumeration programType,Int32 startRowNum,Int32 rowsQty,Boolean setupInProgress,Boolean filterOutUninitializedRows)
看起来这是一个OleDbProvider错误.
你见过/经历过这样的事吗?
语境:
(1)我专门使用
使用(OleDbConnection cnn = new OleDbConnection("{{mymdbConnectionStringHere}}")){
cnn.Open();
...
}
(2)我在一些select SQL表达式中使用IN子句指向外部MDB表.
我想问题是由案例(2)引起的.虽然这仍然是一个假设来检查(我的应用程序的核心代码中需要一些代码修复,我现在考虑是值得修复的,或者我应该更好地切换到MS SQL后端.)
谢谢.
我有一个@Stateless
带有@WebService
接口的EJB ,使用容器管理的事务,这意味着如果没有引发系统异常,在调用方法后,容器会自动提交事务.
如果我EntityManager.persist(...)
为具有唯一约束的列尝试两个具有相同值的对象,则容器将PersistenceException
在我的代码之外的提交中向客户端抛出一个.我如何捕获此异常,以便我可以重新抛出自己的应用程序异常?
我是否必须在我的方法中手动提交事务以捕获提交中的异常?(这是EntityManager.flush()
正确的方法吗?)如果是这样,那么拥有容器管理交易的重点是什么?
我有一个我不拥有的方法,返回null但返回类型是Optional <Boolean>.当我调用x.IsPresent()时它会抛出(场景#2).我尝试将方法包装在fromNullable中但是我得到了类型不匹配(下面的屏幕截图).我如何修复,以便IsPresent()不抛出?
import com.google.common.base.Optional;
private Optional<Boolean> get_I_dontHaveControlOverThisMethod () {
return null; // Ooops!
}
// Compile error? -----------------------> vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
Optional<Boolean> x = Optional.fromNullable(get_I_dontHaveControlOverThisMethod());
// (#1) Optional<Boolean> x = Optional.fromNullable(null); // <- this work fine
// (#2) Optional<Boolean> x = get_I_dontHaveControlOverThisMethod();
if (x.isPresent()) { // <- this blows up! NPE when (#2) runs
// non-null good value;
}
Run Code Online (Sandbox Code Playgroud)
我有这种格式的字符串:
file://c:/Users/....
file://E:/Windows/....
file:///f:/temp/....
file:///H:/something/....
Run Code Online (Sandbox Code Playgroud)
我怎么才能得到c:/Users/...
或H:/something/...
?