Napisałem custom taglet library o nazwach, które rozpoczynają z kropką: .codelet
, .codelet.and.out
, itp. Jest kompilowany z JDK 7.JDK 1.7 umożliwia niestandardowe znaki z nazwami * począwszy * z kropką. JDK 1.8 zabrania tego?
Podczas generowania JavaDoc przy użyciu 1.7 javadoc.exe
, działa dobrze. Ale podczas generowania go z JDK 8, to nie dlatego,
C:\...\Temp.java:5: error: no tag name after @
* {@.codelet mypkg.Temp}`
Gdybym zmienić kod korzystając się taglet (nie sam kod taglet) do {@codelet mypkg.Temp}
:
C:\...\Temp.java:5: error: unknown tag: codelet
* {@codelet mypkg.Temp}
Note: Custom tags that were not seen: @.codelet
1 error
Zmiana nazwy w kod źródłowy tagletu ma być cod.elet
(code.let
nie jest dobry, ponieważ code
jest już istniejącą nazwą tagletu) i przy użyciu tej nowej nazwy działa.
Dokumentacja narzędzie JavaDoc dla -tag
option (w dolnej części) stwierdza:
Unikanie konfliktów: Jeśli chcesz stworzyć własną przestrzeń nazw, a następnie można użyć kropka oddziela konwencji nazewnictwa podobne do tego używanego w pakietach: com.mycompany.todo. Oracle będzie nadal tworzyć standardowe tagi, których nazwy nie zawierają kropek. Każdy utworzony znacznik zastąpi zachowanie znacznika o tę samą nazwę zdefiniowaną przez Oracle. Jeśli utworzysz tag lub taglet @todo, zawsze będzie to samo zachowanie, które zdefiniujesz, nawet jeśli Oracle później utworzy standardowy tag o tej samej nazwie.
Brakuje mi tu czegoś? Czy to nieudokumentowana zmiana, która po prostu jest do bani? Ponieważ wymaga to całkiem dużej zmiany w mojej bibliotece, jeśli tak jest.
FYI: Taglet overview docs
Powiedziałbym, że to prawdopodobnie nieudokumentowana zmiana. Myślę, że założenie jest takie, że identyfikatory Java w ogóle nie zaczynają się od kropki.Na przykład nazwy pakietów, AFAIK, nie mogą rozpoczynać się od kropki. Prawdopodobnie był to błąd, który był dozwolony w poprzednich wersjach. Czy nie możesz zmienić nazwy tagletu na "codelet", czy w najgorszym przypadku "aliteralmind.codelet"? – GreyBeardedGeek
Jest to publicznie dostępna biblioteka używana przez tysiące programistów java na całym świecie (pozwól mi śnić). Obecne i niedługo stare nazwy tagletów muszą być przestarzałe, a nowo utworzone nazwy tagów muszą zostać utworzone, aby je zastąpić. Nie łamanie mózgu, ale bardzo czasochłonne. To duży ból. To * jest * zalecane dla użytych kropek, aby uniknąć konfliktów z przyszłymi tagletami Sun, więc zamierzam pójść z 'cod.elet' (dreszczem). – aliteralmind
Duży ból, którego można uniknąć, stosując się do tego, co cytowałeś: "użyj konwencji nazw oddzielonej kropkami podobnej do tej używanej w pakietach". Nic nie wspiera założenia, że wiodące kropki powinny działać. W końcu nie rozumiem, dlaczego w ogóle używałeś kropek w swoich nazwiskach. Przestrzenie nazw miały rozwiązać potencjalne niejasności, które działają tylko wtedy, gdy deweloperzy wybierają unikalne przestrzenie nazw, ale jeśli nie wybierzesz unikalnej przestrzeni nazw, nie musisz ich używać ... – Holger