Я не знаю способ получить значения аргументов каждой функции в трассировке стека вызовов, но одно решение состояло бы в том, чтобы поймать определенное исключение (KeyNotFoundException
в Вашем примере) и повторно бросить его в новое Исключение. Это позволяет Вам, связывают любую дополнительную информацию, которой Вы желаете
, Например:
Dim sKey as String = "some-key"
Dim sValue as String = String.Empty
Try
sValue = Dictionary(sKey)
Catch KeyEx As KeyNotFoundException
Throw New KeyNotFoundException("Class.Function() - Couldn't find [" & sKey & "]", KeyEx)
End Try
я ценю Ваш оператор о локализации строк ошибки, но если Ваша аудитория является 'главным образом программистами' тогда, соглашение уже диктует понимание английского языка до некоторой степени (справедливо или неправильно - но это - другие дебаты!)
Принимая во внимание риски, упомянутые djna и ChssPly76, вы можете добиться этого, используя оверлеи с плагином Maven WAR . Это потребует от вас разделения сопоставлений сервлетов, чтобы убедиться, что у вас нет конфликтов URL-адресов и т.п., но это может помочь.
По сути, вы создаете модуль с несколькими зависимостями WAR и используете плагин для их объединения в новый.
Совершенно очевидно, что это возможно, но я думаю, что вам лучше в первую очередь поработать над одной WAR. Позднее "смешивание" содержимого WAR звучит для меня как кошмар службы поддержки.
Напомню, что плагин cargo-maven2-plugin имеет моджо uberwar
. Я не использовал его, но понимаю, что он предназначен для объединения войн, хотя вы должны быть осторожны, чтобы избежать конфликтов.
Быстрое сканирование источника показывает, что вы определяете дескриптор слияния
, чтобы определить, как слить войны. К сожалению, сайт документации пропал, поэтому я не могу предоставить вам более подробную информацию.
Вы можете проверить сайт Codehaus Jira , чтобы понять его текущий статус.
Чтобы использовать плагин, вы должны указать конфигурацию примерно так:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0</version>
<extensions>true</extensions>
<configuration>
<descriptor>merge.xml</descriptor>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>project1.groupId</groupId>
<artifactId>project1</artifactId>
<type>war</type>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>project2.groupId</groupId>
<artifactId>project2</artifactId>
<type>war</type>
<version>1.2.0</version>
</dependency>
</dependencies>
(все еще ищем пример merge.xml)
EAR предназначены для хранения нескольких вещей. Будет ли это возможность для вас?
Edit: Прежде всего, давайте предположим, что нет дублирующихся ресурсов (какой из них должен быть в последней банке?) И что все банки совместимы (у вас есть только одна версия каждого библиотеки и т. д.)
У вас должна быть возможность просто копировать содержимое WEB-INF / друг на друга, за исключением различных файлов XML, которые необходимо аккуратно объединить. Самый простой способ сделать это, вероятно, - использовать таблицу стилей XSLT, которая позволяет вам хранить два XML-документа и объединять их (если я правильно помню, это тег).
Возможно, вам удастся заставить что-то работать с One-Jar.
http://one-jar.sourceforge.net/
Вероятно, он не делает все, что вы хотите.
В общем - нет, это невозможно. Что делать, если у вас есть повторяющиеся имена JSP? Имена / сопоставления сервлетов? Одни и те же прослушиватели контекста загружаются с разными параметрами (обычно, если вы используете Spring / Struts / и т. Д. ...)? Вы уловили суть.
В вашем конкретном случае это может или не может быть возможным в зависимости от ваших конкретных обстоятельств. Извлечь war и скопировать JSP / классы / библиотеки очень просто; слияние web.xml немного сложнее, поскольку вам нужно поддерживать порядок элементов - может быть проще вручную определить «объединенный» web.xml.